11

检查这个程序

ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();

文件 Hey.txt 中有很多字符。远超1000

但我的问题是为什么我第二次尝试打印行。它没有得到打印?

4

4 回答 4

54

从流中读取行的惯用方法是:

std::ifstream filein("Hey.txt");

for (std::string line; std::getline(filein, line); ) 
{
    std::cout << line << std::endl;
}

笔记:

  • 没有close()。C++ 在习惯使用时会为您处理资源管理。

  • 使用 free std::getline,而不是流成员函数。

于 2012-08-26T19:56:22.327 回答
12

根据 C++ 参考(此处),getline 设置ios::fail提取 count-1 个字符的时间。您必须在通话filein.clear();之间getline()打来电话。

于 2012-08-26T20:18:46.100 回答
2
#include<iostream>
using namespace std;
int main() 
{
ifstream in;
string lastLine1;
string lastLine2;
in.open("input.txt");
while(in.good()){
    getline(in,lastLine1);
    getline(in,lastLine2);
}
in.close();
if(lastLine2=="")
    cout<<lastLine1<<endl;
else
    cout<<lastLine2<<endl;
return 0;
}
于 2020-05-21T18:21:27.307 回答
0

正如Kerrek SB 正确所说,有两种可能性:1)第二行是空行2)没有第二行并且所有超过1000 个字符都在一行中,所以第二行getline没有什么可获取的。

于 2012-08-26T20:22:03.403 回答