fstream变量获取文本文件中的所有行

时间:2017-03-27 08:20:23

标签: c++ fstream

我想从文件中逐行读取fstream变量的所有行。

例如:

#include <fstream>

fstream fsFile;

fsfile.open("file.txt", ios::in);

while (fsFile.getline(szLine, LINE_SIZE + 1))
{
    cout << szLine << endl;
}

当我想读取所有行但是我得到一条大于LINE_SIZE的行时,fsFile.bad()返回true并且我得到它。
但是,我想知道fsFile.getline(szLine, LINE_SIZE + 1)突然返回false是怎么回事?
我的意思是函数的返回值是多少?
如果是null,我认为这就是为什么null
当它不是null它返回的时候?
感谢您的支持。

1 个答案:

答案 0 :(得分:2)

使用getlinestd::string版本:

std::ifstream fsFile("file.txt");
std::string line;
while(std::getline(fsFile, line)) {
    std::cout << line << '\n';
}

getline(两个版本)都返回对流的引用,该流可转换为bool,因此您可以检查它的状态(如果读取失败,通常是因为我们到达了结尾该文件)。

这个版本的getline绝对是可取的,因为使用std::string你完全不用担心内存缓冲区了。无需自己创建并记住销毁它,无需担心线的大小。

此外,请重新考虑您对通常被视为不良做法的使用:using namespace std;endl