关于getline和cin的问题

SHIWANG123 2009-09-01 01:27:16
#include<iostream>
#include<string>
using namespace std;

int main()
{
string line;
while(getline(cin,line))
cout<<line<<endl;
return 0;

}

程序如上 不明白什么要输入两次回车才会显示出输入的字符串?

#include<iostream>
#include<string>
using namespace std;

int main()
{

string word;
while(cin>>word)
cout<<word<<endl;

return 0;

}
这段程序如何解释?
cin的意思为读取字符遇到空白字符读取终止,当输入字符时空格键也为空白字符,为什么输入一堆以空格间隔的字符最后打回车时是所有的字符会按行输出呢?不是应该输入一个单词输出一个单词吗?
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2009-09-01
  • 打赏
  • 举报
回复
珍惜生命,远离VC6.
VC6的getline bug可年头久远了。
SHIWANG123 2009-09-01
  • 打赏
  • 举报
回复
while才能判断输入流是否有效啊
所以觉得不能去吧?
SHIWANG123 2009-09-01
  • 打赏
  • 举报
回复
我用的VC6
taodm 2009-09-01
  • 打赏
  • 举报
回复
楼主用的VC6?
jxgxldl 2009-09-01
  • 打赏
  • 举报
回复
回答第二个问题:因为程序里用的是while循环,改成这样就Ok了:
cin >> word;
cout << word;


运行后输入:
This is

输出:This
晨星 2009-09-01
  • 打赏
  • 举报
回复
对于标准输入来说,Ctrl-Z才算结束(Windows),Linux下是Ctrl-D
晨星 2009-09-01
  • 打赏
  • 举报
回复
(1)在偶的VC2005下编译运行一次回车就出来了啊。

64,680

社区成员

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

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