while(cin>>string) 结束循环疑问

tim8880878 2008-03-26 11:36:53
程序1:

#include <iostream>
#include <string>

using namespace std;

int main()
{
string s;
while(cin>>s)
{

}
cout<<s;
cout<<endl;
return 0;
}



程序2:

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

struct Pair
{
string name;
double val;
} ;

vector<Pair> pairs;

double& value(const string& s)
{
for(int i = 0;i < pairs.size(); ++i)
if(s == pairs[i].name) return pairs[i].val;
Pair *p = new(Pair) ;
p->name=s;
p->val =0;
pairs.push_back(*p);
return pairs[pairs.size() - 1].val;
}

int main()
{
string buf;
while(cin >> buf)
value(buf)++;
for(vector<Pair>::const_iterator p = pairs.begin(); p != pairs.end(); ++p)
cout << p ->name << ":" << p->val << '\n';
return 0;
}


问:为什么结束程序1的输入只要按回车就行,而结束程序2的输入要暗ctrl+z 加回车
工具:vc++
...全文
364 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windhawk99ing 2010-01-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 great3779 的回复:]
这可以说是C++的一个bug。有时需要多此Ctrl+Z才行。不过现在cin/cout用的已经很少了。如果仅为调试用,这根本不用输出;如果确实要输出,那就到MFC环境下去吧。
[/Quote]
哥们 这是因为现在的编译器在c++标准上作的不够完全统一造成的
Dallas_Rockets 2008-03-26
  • 打赏
  • 举报
回复
Ctrl+Z
jieao111 2008-03-26
  • 打赏
  • 举报
回复
要想结束还得CRTL+Z
jieao111 2008-03-26
  • 打赏
  • 举报
回复
输出一次,清空一次缓冲区的内容,,并没有结束循环输入
whuSkipper 2008-03-26
  • 打赏
  • 举报
回复
在primer 中说,有两种情况会判false 也就是跳出循环
一是输入类型不对,一是end of file
呵呵,学习ing~~~
tim8880878 2008-03-26
  • 打赏
  • 举报
回复


#include <iostream>
#include <string>

using namespace std;

int main()
{
string s;
while(cin>>s)
{
cout<<s;
cout<<endl;
}

return 0;
}
程序一应该是这样子
sorry

great3779 2008-03-26
  • 打赏
  • 举报
回复
这可以说是C++的一个bug。有时需要多此Ctrl+Z才行。不过现在cin/cout用的已经很少了。如果仅为调试用,这根本不用输出;如果确实要输出,那就到MFC环境下去吧。
jieao111 2008-03-26
  • 打赏
  • 举报
回复
不可能,,你再重新生成试试
tim8880878 2008-03-26
  • 打赏
  • 举报
回复
可以直接copy到vc++ 运行
qmm161 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 babyvox1999 的回复:]
都得CRTL+Z吧。。。
[/Quote]
babyvox1999 2008-03-26
  • 打赏
  • 举报
回复
都得CRTL+Z吧。。。

64,849

社区成员

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

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