用C++读取坐标文件,并且存储在vector中
程序员文章站
2024-03-04 15:10:41
...
这篇文章包含两个基础内容,文件流操作和vector操作,可以参考下面两篇文章:
文件流操作:https://blog.csdn.net/a125930123/article/details/53542261
vector操作:https://blog.csdn.net/armman/article/details/1501974
————————————————————————————————————————————
程序原理
1.输入及输出
输入文件
输出结果
2.处理过程
文件流操作:
1.创建文件流对象
2.打开文件并且存储在对象中
3.进行处理
vector操作:
1.创建vector对象,对象中的元素为point
2.将读取到的坐标存到point里边
3.讲point pushback 到vector里边
4.关闭文件流对象
____________________________________________________________________________________________________________
程序代码
/*
* 程序目标:读取txt文件中的坐标,并且存储在vector、矩阵和数组中
*
* 摘要:
*1.这篇文章包含两个基础内容,文件流操作和vector操作,可以参考下面两篇文章:
*2.文件流操作:https://blog.csdn.net/a125930123/article/details/53542261
*3.vector操作:https://blog.csdn.net/armman/article/details/1501974
*
* 当前版本:1.1
* 作者:Shoen
* 完成日期:2018年3月29日
*/
#include <stdafx.h>
#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
////************利用点的vector存储读取的坐标*************//
//vector是一个序列,读取每个值的方式是 vector.at(i)
int main()
{
ifstream circle;
//定义点的vector
typedef Point_<double> Point2d;
vector<Point2d> points;
//定义点,作为push_back的对象
//这个需要注意,vector的每一项需要作为一个整体来pushback,数组就pushback数组,类就pushback类。
Point2d temp;
//定义两个变量,用来存储读取的数据
double temp1 = 0, temp2 = 0;
circle.open("Circle.txt");
//!circle.eof() 用来控制什么时候读取终止
for(int i = 0; !circle.eof(); i++)
{
//读取txt文件的坐标值
circle >> temp1 >>temp2;
temp.x = temp1;
temp.y = temp2;
points.push_back(temp);
}
for(int i = 0; i < points.size(); i++)
{
cout <<"[" <<points.at(i).x <<" , " <<points.at(i).y <<"]" <<endl;
}
circle.close();
system("pause");
}
////************利用Mat来存储读取的坐标*************//
//int main()
//{
// ifstream in;
// Mat A(200, 2, CV_64F);
// Mat_<double> Points = (Mat_<double>&) A;
// double temp;
// in.open("Circle.txt");
// for(int i = 0; i < 200; ++i)
// {
// for(int j = 0; j < 2;j++)
// {
// //读取txt文件的坐标值
// in >> temp;
// Points(i, j) = temp;
// }
// }
// for(int i = 0; i < 200; ++i)
// {
// for(int j = 0;j < 2; j++)
// {
// cout <<Points(i, j) <<"\t";
// }
// }
// in.close();
// system("pause");
//}
////************利用二维数组存储读取的坐标*************//
//int main()
//{
// ifstream in;
// double weight[20][20];
// in.open("Circle.txt");
// for(int i = 0; i < 20; ++i)
// {
// for(int j = 0; j < 20;j++)
// {
// in >> weight[i][j];
// }
// }
// for(int i = 0; i < 20; ++i)
// {
// for(int j=0;j<20;j++)
// {
// cout <<weight[i][j] <<"\t";
// }
// }
// in.close();
// system("pause");
//}