我将如何读取每行是一个数字的文件,然后将该数字输出到行 vector 中?

例如: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 这样的 3rd 方库不可用)

谢谢!

最佳答案

我怀疑你想要这样的东西:

#include <vector>
#include <fstream>
#include <iterator>

std::vector<int> out;

std::ifstream fs("file.txt");

std::copy(
    std::istream_iterator<int>(fs),
    std::istream_iterator<int>(),
    std::back_inserter(out));

关于c++ - 将 std::ifstream 读取到行 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1675508/

10-09 19:34