在C++中从一个特定的填充读取到最后一行
Reading from a particular fill till the last line in C++
我有一个包含许多行的文本文件。我想把每一行都存储在一个字符串向量中。我想从文件中读到最后一行。我使用了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 );
}
编辑:卡斯夫的答案更好。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 在c++中用vector填充一个简单的动态数组
- 读取文件并输入到矢量中
- 有没有办法在不使用 set_buff() 的情况下从文件中读取并填充消息增益
- C++ 读取文本文件以填充 2D 数组
- InternetReadFile 填充缓冲区,但返回零字节读取
- 如何在文本文件中逐行读取并填充指向对象数组的指针
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- C/C++ 从字符缓冲区读取以填充结构
- 从文件中读取和填充单独的变量
- 从文件中读取输入并填充数组以存储数据供以后使用
- 读取n位并用零填充的通用算法
- 填充 2D 动态数组时"无法读取内存"
- C++ 程序,用于将具有恒定(但未知)列数的未知大小的 CSV 文件(仅填充浮点数)读取到数组中
- 在 c++ 中使用消息结构读取/填充数据缓冲区的正确方法是什么?
- 在C++中从一个特定的填充读取到最后一行
- 读取和写入结构的填充位
- 使用 ifstream 剂量读取大型二进制文件不会填充字符缓冲区C++
- OpenGL如何填充缓冲区并读取它们