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

时间:2012-07-23 10:28:19

标签: c++ file-io vector

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

我已经按照主题here进行了操作,这里的代码有点改变了我的需要:

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

等等。

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

感谢。

3 个答案:

答案 0 :(得分:1)

复制行后,即在for循环结束时,

打印出一个新行字符:

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

答案 1 :(得分:1)

我有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是你的朋友。

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';
}

答案 2 :(得分:1)

这是一种方式:

#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进行编译。