getline()为什么读取的不是文件的一行?

天之骄子呃 2014-12-26 09:23:04


string filename, temp;
cout << "input the file name:" << endl;
cin >> filename;

ifstream infile(filename);

getline(infile, temp);
cout << temp<<endl;//这里一次性把文本文件所有内容全输出了 为什么不是一行呢?

/*while (getline(infile,temp))
{
cout << temp; //这个循环输出的也是全部内容
}*/
cout << "hello world!" << endl;

system("pause");
return 0;


我很疑惑文本文件多少个字符才是一行啊 文本文件里面有个自动换行的选项 选的话文本文件行数变多了 getline到底读的是哪种行?
...全文
470 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
旭日东升1993 2015-01-01
  • 打赏
  • 举报
回复
楼主, 我在我的电脑上测试没任何问题 应该是你的记事本的问题吧 你可以在其他电脑上试一下或者在linux下试一下, 应该没问题的
赵4老师 2014-12-31
  • 打赏
  • 举报
回复
getline是开源的。
zybjtu 2014-12-30
  • 打赏
  • 举报
回复
有换行符'\n'或者'\r\n'才判定是一行
Groves_Lin 2014-12-30
  • 打赏
  • 举报
回复
getline()函数是读到“\n”时记为读入一行
pengzhixi 2014-12-30
  • 打赏
  • 举报
回复
你确定你的文件里面有换行符?
缄默笔记 2014-12-30
  • 打赏
  • 举报
回复
当一行数据较多时,记事本即使取消自动换行,显示时也会把一行分多行显示。推荐一个代码编辑器 NotePad++ 数据较多时,一行数据的话,也会按一行显示~
  • 打赏
  • 举报
回复
首先把你的infile用记事本打开,记得去掉自动换行。。。确定哪里有换行,然后再看是不是getline的对的
bravery36 2014-12-27
  • 打赏
  • 举报
回复
有换行符的才是一行,也就是'\n'标记。自动换行只是显示效果而已。
天之骄子呃 2014-12-27
  • 打赏
  • 举报
回复
引用 3 楼 cs_dingz 的回复:
首先把你的infile用记事本打开,记得去掉自动换行。。。确定哪里有换行,然后再看是不是getline的对的
那个自动换行好像只是显示效果 和编程没有关系
天之骄子呃 2014-12-26
  • 打赏
  • 举报
回复
高手快来啊~

64,685

社区成员

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

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