欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用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.输入及输出

用C++读取坐标文件,并且存储在vector中

输入文件

用C++读取坐标文件,并且存储在vector中

输出结果

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");
//}