将二维矢量保存到文本文件中

Save 2-dimensional vector to a text file

本文关键字:保存 文本 文件 二维      更新时间:2023-10-16

我的问题是如何将二维矢量写入文本文件。

我已经关注了这里的主题,下面是我的代码,根据我的需要进行了一些更改:

ofstream output_file("example.txt");
ostream_iterator<int> output_iterator(output_file, "t");
for ( int i = 0 ; i < temp2d.size() ; i++ ) 
copy(temp2d.at(i).begin(), temp2d.at(i).end(), output_iterator);

我的问题是如何将矢量逐行写入文件?

这就是我想要的:

22 33 44
66 77 88
88 44 22

等等

此代码将矢量的所有元素写入同一行。

谢谢。

一旦复制了行,即在for循环的末尾打印出一个新行字符:

for(...)
{
  : // other code
  output_file << 'n';
}

如果你有C++11,你可以做一些类似的事情:

std::vector<std::vector<int> > v;
//do with v;
for(const auto& vt : v) {
     std::copy(vt.cbegin(), vt.cend(),
           std::ostream_iterator<int>(std::cout, " "));
     std::cout << 'n';
}

其他明智的典型是你的朋友。

typedef std::vector<int> int_v;
typedef std::vector<int_v> int_mat;
int_mat v;
for(int_mat::const_iterator it=v.begin(); it!=v.end(); ++it) {
     std::copy(vt->begin(), vt->end(),
           std::ostream_iterator<int>(std::cout, " "));
     std::cout << 'n';
}

这是一种方法:

#include <vector>
#include <iostream>
int main(){
  std::vector<std::vector<int> > vec;
  /* fill the vector ... */
  for(const auto& row : vec) {
    std::copy(row.cbegin(), row.cend(), std::ostream_iterator<int>(std::cout, " "));
  std::cout << 'n';
  }
  return 0;
}

gcc --std=c++0x test_vector.cc编译。