我想从文件中逐行读取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
它返回的时候?
感谢您的支持。
答案 0 :(得分:2)
使用getline
的std::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
。