我的问题是如何将二维向量写入文本文件。
我已经按照主题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
等等。
此代码将向量的所有元素写入同一行。
感谢。
答案 0 :(得分:1)
打印出一个新行字符:
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
进行编译。