在C++中从一个特定的填充读取到最后一行

Reading from a particular fill till the last line in C++

本文关键字:读取 填充 一行 最后 一个 C++      更新时间:2023-10-16

我有一个包含许多行的文本文件。我想把每一行都存储在一个字符串向量中。我想从文件中读到最后一行。我使用了EOF函数,但它似乎也在最后一行之后存储空行。这是我的代码片段。text_list是一个向量,文件的所有行都存储在该向量中。

void TextBuddy::storeDataFromFileInVector(string filename){
ifstream infile;
int numbers;
string textMessage;
infile.open(filename);
while (!infile.eof()){
    getline(infile, textMessage);
    text_list.push_back(textMessage);
}
infile.close();
}

eof()不着眼于未来。所以,当你在EOF之前,你会把它读到你的向量中,并可能破坏它

将所有行读取为矢量的更好方法是:

string line;
while(getline(inFile, line)
    text_list.push_back(line);

一旦您读取EOF或发生任何其他错误,您的循环就会中断。

另一种方法是使用迭代器和算法库:

copy(istream_iterator<string>(inFile), istream_iterator<string>(),
     back_inserter(text_list));

你喜欢哪一个取决于你。

空行,复数?在推送到列表之前,您应该检查它是否达到EOF。

infile.open( filename );
getline( infile, textMessage );
while( !infile.eof() )
{
    text_list.push_back( textMessage );
    getline( infile, textMessage );
}

编辑:卡斯夫的答案更好。