2012-07-23 48 views
2

我的問題是如何將2維矢量寫入文本文件。將2維矢量保存爲文本文件

我已經按照話題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

請向我們展示temp2d的聲明。 – steffen 2012-07-23 10:35:02

+0

@steffen vector > temp2d; – 2012-07-23 10:38:34

回答

1

打印出新的行字符,一旦你複製的行,即在你的for循環結束:

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

如果你想要更安全一些,並確保輸出被刷新到文件,使用'std :: endl'而不是普通的換行符。 – 2012-07-23 10:31:52

+0

感謝nim和joachim,它終於成功了! – 2012-07-23 10:39:41

+0

@JoachimPileborg我真的不會在每一個新行上花費大量的時間,這將不必要的緩慢完成輸出,std :: streams在它們的生命週期結束時自我刷新,所以沒有什麼可以獲得,除非你正在讀取和寫入流。 – 111111 2012-07-23 10:45:47

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

其他明智的typdefs是你的朋友。

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

這是一個辦法:

編譯gcc --std=c++0x test_vector.cc