Форум программистов, компьютерный форум CyberForum.ru

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

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

C++ Вывод трёх переменных
C++ Вывод значения двух переменных
Вывод окна контроля переменных C++
Вывод значений переменных C++
C++ Вывод переменных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
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]).
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
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;
и оно выдает в файл мне эти координаты.
Как мне сделать так, чтобы первая координата шла в один файл, а вторая во второй?
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:02  [ТС]     Вывод переменных в файл #7
Error "points[0].first" не содержит члена "first"
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
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.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
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>>" не содержит члена "х"
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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>
???????
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:28  [ТС]     Вывод переменных в файл #13
Цитата Сообщение от zitxbit Посмотреть сообщение
Члены
А где их смотреть? =)
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 11:30     Вывод переменных в файл #14
Point2f point;
point. --<lookup>--
Skeep747
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 22
01.04.2014, 11:32  [ТС]     Вывод переменных в файл #15
Цитата Сообщение от zitxbit Посмотреть сообщение
Point2f point;
point. --<lookup>--
после написания "." ничего не выдает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 11:41     Вывод переменных в файл
Еще ссылки по теме:

C++ Случайный вывод значений переменных
Ввод и вывод переменных в фунгцию C++
C++ Ввод и вывод типов переменных

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

Или воспользуйтесь поиском по форуму:
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
01.04.2014, 11:41     Вывод переменных в файл #16
Решение:
1.) Посмотреть в opencv reference;
2.) Отказаться от использования _Point и Point2f. Использовать:
C++
1
2
3
4
5
6
typedef struct 
{
      int x;
      int y;
} PT;
vector<PT> points;
3.) Написать оператор приведения к типу Point2f:
C++
1
2
3
4
5
Point2f& operator (Point2f)(vector<PT>& ptv) const
{
     Point2f pt2f(ptv[0].x, ptv[0].y);
     return pt2f;
}
Примерно так

Добавлено через 4 минуты
Это интересно!!! Если есть еще вопросы то пишите в личку.
Yandex
Объявления
01.04.2014, 11:41     Вывод переменных в файл
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru