С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
#1

Вывод переменных в файл - C++

01.04.2014, 10:28. Просмотров 877. Ответов 15
Метки нет (Все метки)

Здравствуйте. Есть переменная типа Vector. Выглядит она при выводе у меня вот так: [215.51932, 186.77301]. Ну и значения постоянно меняются. Вывожу я её в файл при помощи fstream.
Подскажите, пожалуйста, как мне её вывести так, чтобы не было там "[" "]" "," этих символов.
А лучше было бы если разделить эти два числа, потому что это координаты, и выводить первую координату в один файл, а вторую в другой. Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 10:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод переменных в файл (C++):

Вывод переменных - C++
Что с выводом координат x и y? #include <iostream> #include <conio.h> using namespace std; int main() { float x,y; int...

Вывод значений переменных - C++
Задача Есть в текстовый файл с таким содержанием ( например ): asd123 = 111 12dsd2 = 222 324asd = 333 ds7sd = 444; 1adf = 555; ...

Вывод трёх переменных - C++
Самое простое задание, которое можно себе представить, не получается решить. Подозреваю неправильную постановку задачи, но, всё-таки, может...

Ввод и вывод типов переменных - C++
Ребята, помогите пожалуйста! У меня практика, а c++ builder вообще не изучали(((( Вообщем, задание такое: Организовать ввод и вывод данных...

Вывод значения двух переменных - C++
есть к примеру : шаблон функции (параметры) { что то делаеться и return двух переменных} вызов : cout<<шаблон...

Вывод окна контроля переменных - C++
Где в MS VC 2010 express найти окно контроля переменных ? PS еще мне интересно... вот например допустим тебе лень вспоминать как ты...

15
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 10:34 #2
C++
1
2
3
4
ofstream ofs("data.txt");
double x = 10.5056543, y = 20.5453531;
ofs << std::fixed;
ofs << std::setprecision(7) << x << " " << y << endl;
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 10:40  [ТС] #3
Цитата Сообщение от zitxbit Посмотреть сообщение
C++
1
2
3
4
ofstream ofs("data.txt");
double x = 10.5056543, y = 20.5453531;
ofs << std::fixed;
ofs << std::setprecision(7) << x << " " << y << endl;
Нет смотрите, я эти переменные не задаю, они выдаются при выполнении программы. У меня просто есть переменная "points[0]" типа vector и в ней уже содержится такие значения ([215.51932, 186.77301]).
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 10:46 #4
Переделайте под свой вариант.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
#include <vector>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    vector<pair<double,double>> points;
 
    points[0].first  = 10.5056543;
    points[0].second = 20.5453531;
 
    ofstream ofs("data.txt");
    ofs << std::fixed;
    ofs << std::setprecision(7) << points[0].first << " " << points[0].second << endl;
 
    _getch();
 
    return 0;
}
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 10:51  [ТС] #5
Цитата Сообщение от Skeep747 Посмотреть сообщение
А лучше было бы если разделить эти два числа, потому что это координаты, и выводить первую координату в один файл, а вторую в другой. Как это сделать?
Вот это как сделать?

Добавлено через 4 минуты
Цитата Сообщение от zitxbit Посмотреть сообщение
Переделайте под свой вариант.
Смотрите, я НЕ задаю эти числа. Это координаты точек с экрана монитора, и в каждый момент времени они разные, я просто пишу
C++
1
2
ofstream file("d:/example.txt", ios::app);
        file<<points[0]<<endl;
и оно выдает в файл мне эти координаты.
Как мне сделать так, чтобы первая координата шла в один файл, а вторая во второй?
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 10:58 #6
значения переменным координат задаются в моем примере только для демонстрации.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
#include <vector>
#include <iomanip>
#include <fstream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    vector<pair<double,double>> points;
 
    points[0].first  = 10.5056543;
    points[0].second = 20.5453531;
 
    ofstream ofs1("data_x.txt");
    ofstream ofs2("data_y.txt");
 
 
    ofs1 << std::fixed;
    ofs1 << std::setprecision(7) << points[0].first;
 
    ofs2 << std::fixed;
    ofs2 << std::setprecision(7) << points[0].second;
 
    ofs1.close();
    ofs2.close();
 
    _getch();
 
    return 0;
}
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:02  [ТС] #7
Error "points[0].first" не содержит члена "first"
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 11:08 #8
Вопрос, а какой компилятор вы используете, если это Linux, то сообщите командную строку компиляции: g++ ...

Добавлено через 1 минуту
А вообще-то, более целесообразно было бы чтобы вы разместили весь ваш код, а я отредактировал.

Добавлено через 33 секунды
Я при компиляции исходника использовал MSVC++ 2010

Добавлено через 1 минуту
Еще один вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <vector>
#include <iomanip>
#include <fstream>
 
typedef struct
{
        double x;
        double y;
} PT;
 
using namespace std;
 
int main(int argc, char* argv[])
{
    vector<PT> points;
 
    points[0].x  = 10.5056543;
    points[0].y  = 20.5453531;
 
    ofstream ofs1("data_x.txt");
    ofstream ofs2("data_y.txt");
 
 
    ofs1 << std::fixed;
    ofs1 << std::setprecision(7) << points[0].x;
 
    ofs2 << std::fixed;
    ofs2 << std::setprecision(7) << points[0].y;
 
    ofs1.close();
    ofs2.close();
 
    _getch();
 
    return 0;
}
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:08  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
 
#include <iostream>
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <vector>
 
using namespace cv;
using namespace std;
 
Point2f point;
bool addRemovePt = false;
 
static void onMouse( int event, int x, int y, int /*flags*/, void* /*param*/ )
{
    if( event == CV_EVENT_LBUTTONDOWN )
    {
        point = Point2f((float)x, (float)y);
        addRemovePt = true;
    }
}
 
int main( int argc, char** argv )
{
    VideoCapture cap;
    TermCriteria termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03);
    Size subPixWinSize(10,10), winSize(31,31);
 
    const int MAX_COUNT = 500;
 
    if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
        cap.open(argc == 2 ? argv[1][0] - '0' : 0);
    else if( argc == 2 )
        cap.open(argv[1]);
 
    namedWindow( "Point Traking", 1 );
    setMouseCallback( "Point Traking", onMouse, 0 );
 
    Mat gray, prevGray, image;
    vector<Point2f> points[2];
 
    for(;;)
    {
        Mat frame;
        cap >> frame;
        if( frame.empty() )
            break;
 
        frame.copyTo(image);
        cvtColor(image, gray, CV_BGR2GRAY);
 
         if( !points[0].empty() )
        {
            vector<uchar> status;
            vector<float> err;
            if(prevGray.empty())
                gray.copyTo(prevGray);
            calcOpticalFlowPyrLK(prevGray, gray, points[0], points[1], status, err, winSize,
                                 3, termcrit, 0, 0.001);
            size_t i, k;
            for( i = k = 0; i < points[1].size(); i++ )
            {
                if( addRemovePt )
                {
                    if( norm(point - points[1][i]) <= 5 )
                    {
                        addRemovePt = false;
                        continue;
                    }
                }
 
                if( !status[i] )
                    continue;
 
                points[1][k++] = points[1][i];
                circle( image, points[1][i], 3, Scalar(0,255,0), -1, 8);
            }
            points[1].resize(k);
        }
 
        if( addRemovePt && points[1].size() < (size_t)MAX_COUNT )
        {
            vector<Point2f> tmp;
            tmp.push_back(point);
            cornerSubPix( gray, tmp, winSize, cvSize(-1,-1), termcrit);
            points[1].push_back(tmp[0]);
            addRemovePt = false;
        }
 
 
        imshow("Point Traking", image);
 
        char c = (char)waitKey(10);
        if( c == 27 )
            break;
        switch( c )
        {
        case 'c':
            points[0].clear();
            points[1].clear();
            break;
        }
 
        std::swap(points[1], points[0]);
        cv::swap(prevGray, gray);
        if (c=='w'){
        ofstream file("d:/example.txt", ios::app);
        file<<points[0]<<endl;
        file.close ();}
    }
 
    return 0;
}
У меня тоже MSVC++ 2010.
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 11:22 #10
Дайте определение
C++
1
Point2f point;
т.е. мне нужны ее переменные.

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
 
#include <iostream>
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <vector>
 
using namespace cv;
using namespace std;
 
Point2f point;
bool addRemovePt = false;
 
static void onMouse( int event, int x, int y, int /*flags*/, void* /*param*/ )
{
    if( event == CV_EVENT_LBUTTONDOWN )
    {
        point = Point2f((float)x, (float)y);
        addRemovePt = true;
    }
}
 
int main( int argc, char** argv )
{
    VideoCapture cap;
    TermCriteria termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03);
    Size subPixWinSize(10,10), winSize(31,31);
 
    const int MAX_COUNT = 500;
 
    if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
        cap.open(argc == 2 ? argv[1][0] - '0' : 0);
    else if( argc == 2 )
        cap.open(argv[1]);
 
    namedWindow( "Point Traking", 1 );
    setMouseCallback( "Point Traking", onMouse, 0 );
 
    Mat gray, prevGray, image;
    vector<Point2f> points[2];
 
    for(;;)
    {
        Mat frame;
        cap >> frame;
        if( frame.empty() )
            break;
 
        frame.copyTo(image);
        cvtColor(image, gray, CV_BGR2GRAY);
 
         if( !points[0].empty() )
        {
            vector<uchar> status;
            vector<float> err;
            if(prevGray.empty())
                gray.copyTo(prevGray);
            calcOpticalFlowPyrLK(prevGray, gray, points[0], points[1], status, err, winSize,
                                 3, termcrit, 0, 0.001);
            size_t i, k;
            for( i = k = 0; i < points[1].size(); i++ )
            {
                if( addRemovePt )
                {
                    if( norm(point - points[1][i]) <= 5 )
                    {
                        addRemovePt = false;
                        continue;
                    }
                }
 
                if( !status[i] )
                    continue;
 
                points[1][k++] = points[1][i];
                circle( image, points[1][i], 3, Scalar(0,255,0), -1, 8);
            }
            points[1].resize(k);
        }
 
        if( addRemovePt && points[1].size() < (size_t)MAX_COUNT )
        {
            vector<Point2f> tmp;
            tmp.push_back(point);
            cornerSubPix( gray, tmp, winSize, cvSize(-1,-1), termcrit);
            points[1].push_back(tmp[0]);
            addRemovePt = false;
        }
 
 
        imshow("Point Traking", image);
 
        char c = (char)waitKey(10);
        if( c == 27 )
            break;
        switch( c )
        {
        case 'c':
            points[0].clear();
            points[1].clear();
            break;
        }
 
        std::swap(points[1], points[0]);
        cv::swap(prevGray, gray);
        if (c=='w'){
        ofstream file("d:/example.txt", ios::app);
        file << std::fixed << std::setprecision(7);
        file <<points[0].x << " " << points[0].y <<endl;
        file.close ();}
    }
 
    return 0;
}
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:25  [ТС] #11
typedef cv::Point_<float>
это при наведение на нее.
это библиотека opencv для работы с изображениями. Суть программы в том, что я получаю кадры с веб камеры в реальном времени. Тыкаю курсором в определенную точку и за этой точкой на экране начинается "слежка" и points[0] это координаты этих точек

Добавлено через 2 минуты
Error: clss "std::vector<cv::Point2f, std::allocator<cv::Point2f>>" не содержит члена "х"
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 11:27 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "opencv2/video/tracking.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
 
#include <iostream>
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <vector>
 
using namespace cv;
using namespace std;
 
Point2f point;
bool addRemovePt = false;
 
static void onMouse( int event, int x, int y, int /*flags*/, void* /*param*/ )
{
    if( event == CV_EVENT_LBUTTONDOWN )
    {
        point = Point2f((float)x, (float)y);
        addRemovePt = true;
    }
}
 
int main( int argc, char** argv )
{
    VideoCapture cap;
    TermCriteria termcrit(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03);
    Size subPixWinSize(10,10), winSize(31,31);
 
    const int MAX_COUNT = 500;
 
    if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))
        cap.open(argc == 2 ? argv[1][0] - '0' : 0);
    else if( argc == 2 )
        cap.open(argv[1]);
 
    namedWindow( "Point Traking", 1 );
    setMouseCallback( "Point Traking", onMouse, 0 );
 
    Mat gray, prevGray, image;
    vector<Point2f> points[2];
 
    for(;;)
    {
        Mat frame;
        cap >> frame;
        if( frame.empty() )
            break;
 
        frame.copyTo(image);
        cvtColor(image, gray, CV_BGR2GRAY);
 
         if( !points[0].empty() )
        {
            vector<uchar> status;
            vector<float> err;
            if(prevGray.empty())
                gray.copyTo(prevGray);
            calcOpticalFlowPyrLK(prevGray, gray, points[0], points[1], status, err, winSize,
                                 3, termcrit, 0, 0.001);
            size_t i, k;
            for( i = k = 0; i < points[1].size(); i++ )
            {
                if( addRemovePt )
                {
                    if( norm(point - points[1][i]) <= 5 )
                    {
                        addRemovePt = false;
                        continue;
                    }
                }
 
                if( !status[i] )
                    continue;
 
                points[1][k++] = points[1][i];
                circle( image, points[1][i], 3, Scalar(0,255,0), -1, 8);
            }
            points[1].resize(k);
        }
 
        if( addRemovePt && points[1].size() < (size_t)MAX_COUNT )
        {
            vector<Point2f> tmp;
            tmp.push_back(point);
            cornerSubPix( gray, tmp, winSize, cvSize(-1,-1), termcrit);
            points[1].push_back(tmp[0]);
            addRemovePt = false;
        }
 
 
        imshow("Point Traking", image);
 
        char c = (char)waitKey(10);
        if( c == 27 )
            break;
        switch( c )
        {
        case 'c':
            points[0].clear();
            points[1].clear();
            break;
        }
 
        std::swap(points[1], points[0]);
        cv::swap(prevGray, gray);
        if (c=='w'){
        ofstream file1("d:/example_x.txt", ios::app);
        ofstream file2("d:/example_y.txt", ios::app);
        file1 << std::fixed << std::setprecision(7);
        file1 <<points[0].x << endl;
        file2 << std::fixed << std::setprecision(7);
        file2 <<points[0].y << endl;
        file1.close (); file2.close(); }
    }
 
    return 0;
}
Добавлено через 1 минуту
Члены
C++
1
typedef cv::Point_<float>
???????
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:28  [ТС] #13
Цитата Сообщение от zitxbit Посмотреть сообщение
Члены
А где их смотреть? =)
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 11:30 #14
Point2f point;
point. --<lookup>--
0
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:32  [ТС] #15
Цитата Сообщение от zitxbit Посмотреть сообщение
Point2f point;
point. --<lookup>--
после написания "." ничего не выдает
0
01.04.2014, 11:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 11:32
Привет! Вот еще темы с ответами:

Ввод и вывод переменных в фунгцию - C++
Добрый вечер, только начал осваиваться на языке C++. Возник вопрос как передать переменную внутрь функции. #include &lt;cstdlib&gt; ...

Случайный вывод значений переменных - C++
Доброй ночи, мне тут подруга дала задачку, написать программу-гадалку. Ну мол, вводишь вопрос, а она выдает &quot;Да&quot; или &quot;Нет&quot;. Проблема в...

Ввод и вывод текстовых переменных - C++
18. Введите свою фамилию , имя , отчество как одно текстовое Данное . Выведите на экран сначала имя , затем отчество , затем фамилию.

Вывод параметров или переменных из функции - C++
Здравствуйте. В Паскале можно вернуть несколько параметров. procedure(int i,j; var real hik, tik; var string tin, gak;); begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.