请问: while(cin>>str)这个循环!

iverson7909 2003-04-09 02:45:03
请问:
string str;
while( cin >> str )
{cout << str;}
这个循环出不去!
为什么?
谢了!
...全文
344 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveCreatesBeauty 2003-05-30
  • 打赏
  • 举报
回复
while(cin>>str)
c++是强类型检查的,
以前有位朋友问过为何可以这样用,
这是因为cin的一个函数会进行转换得到bool类型值.
ChinaKevin 2003-04-10
  • 打赏
  • 举报
回复
这个问题在C++ primer 撒谎能够有的,而且到处是,我不知道stan 是怎么跳出循环的!
有兴趣的可以把他的书找来看一看的~!
iverson7909 2003-04-09
  • 打赏
  • 举报
回复
谢谢大家的倾囊相告!小弟已经略直一二了!有不懂我会在问的!在次谢过!
wyqiang 2003-04-09
  • 打赏
  • 举报
回复
大师们教导
猫猫真有人缘
liem 2003-04-09
  • 打赏
  • 举报
回复
你为什么要用这样的循环呢?
目的?
完成什么功能?
想想能否用其它方法完成同样的功能。
langzi8818 2003-04-09
  • 打赏
  • 举报
回复
:)没的说了
LoveCreatesBeauty 2003-04-09
  • 打赏
  • 举报
回复
Windows下用ctrl+Z可以产生EOF,
Unix下用ctrl+D可以产生EOF
LoveCreatesBeauty 2003-04-09
  • 打赏
  • 举报
回复
需要enter是因为cin输入是采取了缓冲。在读取到EOF或者输入类型不匹配时都会终止输入,后者会在返回的basic_istream对象设置一个错误标志。“>>”会返回这个对象(引用),这也是 cin >> iX >> iY >> iZ; 这种连写可以的原因:


basic_istream& operator>>(basic_istream& (*pf)(basic_istream&));
basic_istream& operator>>(basic_ios<E, T>& (*pf)(basic_ios<E, T>&));
basic_istream& operator>>(ios_base<E, T>& (*pf)(ios_base<E, T>&));
basic_istream& operator>>(basic_streambuf<E, T> *sb);
basic_istream& operator>>(bool& n);
basic_istream& operator>>(short& n);
basic_istream& operator>>(unsigned short& n);
basic_istream& operator>>(int& n);
basic_istream& operator>>(unsigned int& n);
basic_istream& operator>>(long& n);
basic_istream& operator>>(unsigned long& n);
basic_istream& operator>>(void *& n);
basic_istream& operator>>(float& n);
basic_istream& operator>>(double& n);
basic_istream& operator>>(long double& n);
shornmao 2003-04-09
  • 打赏
  • 举报
回复
http://www.cpphelp.net/faq.html
fangrk 2003-04-09
  • 打赏
  • 举报
回复
我讲得也不是很清楚,你可以去看看《C++标准程序库》P600
你程序可以这样写:
string str;
while( cin >> str )
{if(str[0]=='*') break;
cout << str;
}
EthanJiang0827 2003-04-09
  • 打赏
  • 举报
回复
你那个while只有在输入出错或输入流结束(有结束标志)的时候才退出啊!回车不是结束标志。
fangrk 2003-04-09
  • 打赏
  • 举报
回复
string str;
while( cin >> str )
{cout << str;}

cin>>str返回cin,在条件判断中间将会调用operator void*来判断cin是否有错误。
当遇到输入错误(比如输入整数却输入了字符)或者流结束(比如读文件到了文件末尾)或者其他原因(比如定位于一个文件的开头之前)就会中断循环。
在你的例子中间,只能使用ctrl+d或者ctrl+z来终止程序
woxihuanbohe 2003-04-09
  • 打赏
  • 举报
回复
在循环体内判断一下 然后break!
TopCat 2003-04-09
  • 打赏
  • 举报
回复
如果你要输入一行文字,用if(getline(cin, str))...
TopCat 2003-04-09
  • 打赏
  • 举报
回复
怎么不是这个意思?
这个循环只有在 cin 的状态为 !good 的时候才结束,而要达到这个效果,只有两条途径:输入出错(不太可能),或者输入流结束。输入流结束标志就是ctrl + z。
iverson7909 2003-04-09
  • 打赏
  • 举报
回复
我说的不是这个意思!

string str;
while( cin >> str )
{cout << str;}
...
按道理,应该输入完以后,按回车,输出str的内容,然后程序往下进行,但是,输出完以后
还让我输入?无法进行下面的程序?
cin>> str 的返回值是 true or false 吗?

pengzhenwanli 2003-04-09
  • 打赏
  • 举报
回复
Ctrl + Z
  • 打赏
  • 举报
回复
ctrl+Z

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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