c++文件读取中的getline

lincolnandlinda 2009-03-21 08:21:18
ifstream file;
char line[256];
file.getline(line,256);//我用这个函数不断读取文件,分步执行时,怎么有一次读到一个空串呢?
文件没有空行,这是怎么回事??
...全文
401 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windsting 2009-03-22
  • 打赏
  • 举报
回复
5、6楼的回答是正解,用这个方法基本上万无一失,

用你原来的方法,即便你写:
char line[4096];
也总有一天会出问题的。

就这个问题,Bjarne曾经在The C++ Programming Language里面举了一个例子,
跟LZ的我问题,基本上只有变量名的区别,你有空看看吧。
amossavez 2009-03-22
  • 打赏
  • 举报
回复
没遇到过,不清楚原因
楼主用6楼的试试看!!
wxgiter 2009-03-22
  • 打赏
  • 举报
回复
string 好用。。。
  • 打赏
  • 举报
回复
建议用string来接收file流
hust_terry 2009-03-21
  • 打赏
  • 举报
回复
估计是有一行大于255了
jakqigle 2009-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fableboy 的回复:]

while(getline(infile,string))
cout < < string < < endl;

}
[/Quote]

cout << strBuf << endl;
jakqigle 2009-03-21
  • 打赏
  • 举报
回复
如果实不好找毛病的话,建议就用string吧
#include <fstream>
#include <string>
using namespace std;

int main()
{
ifstream infile("data.txt");

string strBuf;

while(getline(infile,string))
cout << string << endl;

}
ltc_mouse 2009-03-21
  • 打赏
  • 举报
回复
再检查以下两个方面:
1. 文件中是否有某一行超过255个字符的?
2. 是否已经读完文件的最后一行了?
lincolnandlinda 2009-03-21
  • 打赏
  • 举报
回复
指定了.
file.open("data.txt");
lincolnandlinda 2009-03-21
  • 打赏
  • 举报
回复
指定了,没写上去。
file.open("data.txt);
java_lover_ 2009-03-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 lincolnandlinda 的帖子:]
ifstream file;
char line[256];
file.getline(line,256);//我用这个函数不断读取文件,分步执行时,怎么有一次读到一个空串呢?
文件没有空行,这是怎么回事??
[/Quote]
你不是没指定要操作的文件吗?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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