从坐标向量中提取坐标并保存到文件
Posted
技术标签:
【中文标题】从坐标向量中提取坐标并保存到文件【英文标题】:Extract co-ordinates from a vector of co-ordinates and save to file 【发布时间】:2012-10-04 09:34:30 【问题描述】:我有一个向量,其中包含一个列表坐标 ...x1,y1 ; x2,y2....xn,yn
我正在尝试提取作为坐标的每个单独元素,然后将它们保存为文件,作为易于阅读的漂亮描绘的坐标对。或者我保存它们会有什么好处,这样我就可以在 excel e.t.c 中绘制一些东西(作为 x 和 y 值的列)。
我的原始向量大小是31,最初构造为
vector<vector<Point> > myvector( previous vector.size() );
【问题讨论】:
@hmjd 我猜“如何从向量中提取单个元素”? 是的......在这种情况下,单个元素是一个坐标,我想将“分解列表”分成单个坐标对。如果我尝试将此向量保存为 xml/yml,它只会打印一个数字列表,这些数字是我的点对,但没有正确划分(1,2,3,4 保存为 1,2,3,4等等 【参考方案1】:在 C++ 中写入 Excel 文件很容易。您可以按如下方式进行。
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<Point> myVec;
void main()
ofstream fout("C:/output.xls");
for(unsigned int i=0; i<myVec.Size(); i++)
int x = myVec[i].x;
int y = myVec[i].y;
fout<<x; //Write value of x in first column
fout<<"\t"; //Jump to next column
fout<<y; //Write value of y in next column
fout<<endl; //Jump to first column of next row
fout.close();
使用 Microsoft Excel 打开输出文件时,可能会显示警告。你可以忽略它。
【讨论】:
感谢这是一个很好的答案,这是我最终需要做的......但是我不知道如何访问每个元素对......例如我调用 myVec.[i].front ().x 来访问第一对。这可以完美地保存到excell ...我似乎无法调用 myVec[i].x (错误是该类没有成员'x')..... . 但不知道如何扫描到第二对并最终到最后 你使用的vector的内部数据类型是什么?是Point
还是别的什么?
是的,我认为它是一个 Point
数据类型的二维数组。如果您尝试存储坐标,那么我建议创建 vector<Point>
或 vector<vector<int>>
【参考方案2】:
在 for 循环中使用 std::vector<std::vector<Point>>::const_iterator
来遍历坐标列表的所有元素。
【讨论】:
【参考方案3】:您可以使用at
或[]
运算符并迭代向量的元素。然后按照您的要求将每一个保存到文件或 Excel 表中。
【讨论】:
我可以访问元素列表,其中一个元素是与 myVec[i] 的坐标对......但它只是转储整个列表......我认为它由 0 行组成...... .【参考方案4】:“提取”向量中的元素(一种可能的方式!):
std::vector<anObj> myVec;
//...fill the vector...
//get the elements:
for(int i = 0; i < myVec.length(); i++)
int x = myVec.at(i).x;
int y = myVec.at(i).y;
//do something else
在 C++ 中使用 Excel 有点复杂。有关托管和非托管方式,请参阅一些 examples。
【讨论】:
调用 myVec.at(i).x 会出现以下错误“类没有成员 x”... 可能我需要将原始向量分成单独的“元素”或坐标对? 这只是一个例子!此代码中的“x”只是假设性的。您必须使用指针类中的变量,并且必须包含该类才能以这种方式使用它!以上是关于从坐标向量中提取坐标并保存到文件的主要内容,如果未能解决你的问题,请参考以下文章