我有一个包含列表坐标的矢量... x1,y1; x2,y2 .... xn,yn从一个坐标矢量中提取坐标并保存到文件
我想提取每个单独的元素,这是一个坐标,然后将它们保存为一个很好的划定的协调对,可以很容易地阅读文件。或者,我会保存它们,这样我可以在excel e.t.c中绘制一些东西(如x和y值的列)。
我原来的向量尺寸是31,最初设计为
vector<vector<Point> > myvector(previous vector.size());
我有一个包含列表坐标的矢量... x1,y1; x2,y2 .... xn,yn从一个坐标矢量中提取坐标并保存到文件
我想提取每个单独的元素,这是一个坐标,然后将它们保存为一个很好的划定的协调对,可以很容易地阅读文件。或者,我会保存它们,这样我可以在excel e.t.c中绘制一些东西(如x和y值的列)。
我原来的向量尺寸是31,最初设计为
vector<vector<Point> > myvector(previous vector.size());
写入Excel文件在C++中很容易。你可以这样做,如下所示。
#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 perfec tly ...我似乎无法调用myVec [i] .x(错误是类没有成员'x')......但不知道如何扫描到第二对,并且最终到底 –
你正在使用的矢量的内部数据类型是什么?它是“点”还是别的? – sgarizvi
是的我认为这是一个
使用std::vector<std::vector<Point>>::const_iterator
在for循环遍历您的坐标列表中的所有元素。
您可以使用at
或[]
运算符并遍历向量的元素。然后按照你的要求将每一个保存到文件或Excel表格中。
我可以访问元素列表,其中一个元素是myVec [i]的坐标对...但它只是转储整个列表....我认为它包含0行... –
“提取”,在一个向量的元素(一种可能的方式!):
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”......可能我需要将原始向量切成单个的“元素”或co-ord对? –
这只是一个例子!“x “在这段代码中只是假设,你必须使用指针类中的变量,并且必须包含类以这种方式使用它! – marscode
确切的问题是什么? – hmjd
@hmjd我想“如何从矢量中提取单个元素”? – Dan
是的...在这种情况下,单个元素是一个坐标,我想'分解列表'成单个的配对。如果我试图将这个向量保存为xml/yml,它只是打印一个数字列表,这是我的点对,但没有适当的描述({{1,2},{3,4})保存为1,2,3,4 etc –