如何讀取文件中的每行是單個數字,然後將該數字輸出到行向量中?將std :: ifstream讀入行向量
例如:file.txt的包含:
314
159
265
123
456
我已經試過這樣實現:
vector<int> ifstream_lines(ifstream& fs) {
vector<int> out;
int temp;
getline(fs,temp);
while (!fs.eof()) {
out.push_back(temp);
getline(fs,temp);
}
fs.seekg(0,ios::beg);
fs.clear();
return out;
}
但是當我嘗試編譯,我得到的錯誤,如:
error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline
(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' :
could not deduce template argument for 'std::basic_istream<_Elem,_Traits> &' from 'std::ifstream'
所以,顯然有些事情是錯誤的。有沒有比我想要的更優雅的解決方案? (假設像Boost這樣的第三方庫不可用)
謝謝!
完美!謝謝! – 2009-11-04 17:58:15
您應該注意,它不會檢測輸入文件中的錯誤(即同一行中有兩個數字)。 – 2009-11-04 18:57:43
流迭代器將從單行讀取多個值,以空格分隔,但如果遇到除數字或空格以外的內容,它將停止,並使用'fs.eof()== false'和'fs。失敗()== true'。 – 2009-11-04 19:28:18