一个关于getline的问题

a130206 2007-05-30 09:58:10
有一小程序:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string line,word;
while(getline(cin,line))
cout<<line<<endl;
cout<<endl;
return 0;
}
问题有:(1)输入字符串:
hello(回车)
word(回车)
在打第二个回车的时候,程序会立即显示hello,若再打回车,会显示一个空行后,输出word,为什么会这样?
(2)为什么在我进行输入的时候不能连续输入三行以上的时候,再显示结果?
(3)ctrl_z在类似的程序中到底起着怎样的作用?
  程序在VC6.0环境下运行
望高手指教!
...全文
354 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hamlet0168 2007-06-03
  • 打赏
  • 举报
回复
确实,毛病出在编译器上。
mfkdyq 2007-06-03
  • 打赏
  • 举报
回复
VC6有严重的问题,使用VC6来学习C++简直是浪费生命啊。
给你一个好的DEVC++下载地址:acm.hrbeu.edu.cn
或者上微软中文网站上下载VS2005
yuyunliuhen 2007-06-03
  • 打赏
  • 举报
回复
en DEV就不会出现这样的情况
taodm 2007-05-31
  • 打赏
  • 举报
回复
VC6,并且没打sp6补丁?
likexin 2007-05-31
  • 打赏
  • 举报
回复
CTRL z代表结束符,比如当你用流对象做判断时就是判断流对象的状态位,当输入CTRL Z时他的结素位就被设置为1,当他发生不可修复的错误时相应位也为1,这3个状态位有一个为1 流对象就不能使用,判断就为FLASE 所以一般用WHILE(CIN>>I)做判断时想结束的话 就给CIN赋上CTRL Z就能跳出循环
至于为什么多一个空行帮顶
Allengo 2007-05-31
  • 打赏
  • 举报
回复

getline(cin,line);
cout<<line<<endl;

--------------------------------------
为什么用getline输入的时候要回车两次才输出,输出并且把第二次的回车给输出了
与cin >> ,cin.getline()不同
???
VCLIFE 2007-05-31
  • 打赏
  • 举报
回复
在打第二个回车的时候,程序会立即显示hello,若再打回车,会显示一个空行后,输出word,为什么会这样?
--------------------------
VC,同楼主一样,中间有一个空行,没有想明白,等高手

还有就是跟楼主说,在windows环境下是ctrl+D
大胖子哥 2007-05-30
  • 打赏
  • 举报
回复
(1)我用devcpp调试,没有出现这样的情况。
(2)你没有用程序控制它连续输入几行再输出,它当然不会了,函数是getline(取一行啊)
(3)键入ctrl_z 是键入了一个EOF(end of file),表示文件末尾,用ctrl-z 就表示没有更多的数据可以输入,ctrl-z是在windows 系统中的一个标志符。

64,634

社区成员

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

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