2012-10-04 50 views
1

我有一个包含列表坐标的矢量... x1,y1; x2,y2 .... xn,yn从一个坐标矢量中提取坐标并保存到文件

我想提取每个单独的元素,这是一个坐标,然后将它们保存为一个很好的划定的协调对,可以很容易地阅读文件。或者,我会保存它们,这样我可以在excel e.t.c中绘制一些东西(如x和y值的列)。

我原来的向量尺寸是31,最初设计为

vector<vector<Point> > myvector(previous vector.size()); 
+5

确切的问题是什么? – hmjd

+0

@hmjd我想“如何从矢量中提取单个元素”? – Dan

+0

是的...在这种情况下,单个元素是一个坐标,我想'分解列表'成单个的配对。如果我试图将这个向量保存为xml/yml,它只是打印一个数字列表,这是我的点对,但没有适当的描述({{1,2},{3,4})保存为1,2,3,4 etc –

回答

3

写入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打开输出文件时,可能会显示警告。你可以忽略它。

+0

感谢这个很好的答案,并且是我最终需要做的事情。不知道如何访问每个元素对...例如,我打电话给myVec。[i] .front()。x访问第一对。这个节省到excell perfec tly ...我似乎无法调用myVec [i] .x(错误是类没有成员'x')......但不知道如何扫描到第二对,并且最终到底 –

+0

你正在使用的矢量的内部数据类型是什么?它是“点”还是别的? – sgarizvi

+0

是的我认为这是一个,但形式为“矢量> myVec” –

3

使用std::vector<std::vector<Point>>::const_iterator在for循环遍历您的坐标列表中的所有元素。

0

您可以使用at[]运算符并遍历向量的元素。然后按照你的要求将每一个保存到文件或Excel表格中。

+0

我可以访问元素列表,其中一个元素是myVec [i]的坐标对...但它只是转储整个列表....我认为它包含0行... –

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

+0

调用myVec.at (i).x给出了下面的错误“类没有成员x”......可能我需要将原始向量切成单个的“元素”或co-ord对? –

+0

这只是一个例子!“x “在这段代码中只是假设,你必须使用指针类中的变量,并且必须包含类以这种方式使用它! – marscode