getline()的问题

shiyanhld 2003-09-19 11:25:58
我用while加getline()循环从一个文件里一行一行读入,每行是以‘\n’定义结束的,可是当读入文件要是最后一行是一个空行,就是什么都没有的情况下界getline就没办法检查是否结束,请问怎样让getline()读到文件结尾终止,因为这个函数的第一个parameter可以是一个ifstream的对象,有没有办法判断这个对象是否不能再输出或者判断是否为空的办法?
...全文
1389 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
马丁当 2004-02-08
  • 打赏
  • 举报
回复
while(!sin.eof())
{
getline(sin,content[i],'\n');
}
黑白猿 2003-09-29
  • 打赏
  • 举报
回复
我喜欢下面这个样子:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
char buff[80];
ifstream file("abc.txt",ios::in);
while(!file.eof())
{
file.getline(buff, 80, '\n');
cout << buff<< endl;
}
file.close();
system("pause");
return 0;
}
cxjddd 2003-09-29
  • 打赏
  • 举报
回复
要不自己在文件后面插入结束标志?
lyr311 2003-09-29
  • 打赏
  • 举报
回复
Mark!
lemon520 2003-09-29
  • 打赏
  • 举报
回复
到文件尾时,则在该点的读入操作失败。
tonybaobao 2003-09-20
  • 打赏
  • 举报
回复
getline默认就是以换行结束的。而且在txt文件中,换行是'\r\n'。
停止循环你可以设立一个flag,读到这个flag,停止。
shiyanhld 2003-09-20
  • 打赏
  • 举报
回复
up
RookieStar 2003-09-20
  • 打赏
  • 举报
回复
你可以这样:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
char str[80];
ifstream file("abc.txt",ios::in);
while(file.getline(str,80,'\n')&&!file.eof())
cout<<str<<endl;
file.close();
return 0;
}
shiyanhld 2003-09-20
  • 打赏
  • 举报
回复
我的是这样写的getline(sin,content[i],'\n');sin是一个ifstraem类对象用来打开要读取的文件,content是一个string数组,'\n'定义行的结束,然后我这样写的while(getline(sin,content,'\n')){i++;}可是当读到文件末尾的时候就出错了,因为最后一行要是空行getline是找不到'\n'的,这个如何控制?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧