注册 登录
编程论坛 C++教室

[求助]一个小程序中的问题

blueboy82006 发布于 2007-08-08 08:05, 1478 次点击

#include <iostream>
using namespace std;

#include <string>

int main()
{
string word;

while ( cin >> word )
cout << "word read is: " << word << '\n';

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;
}
在书上看到一个小程序,但不知道什么时候会能执行这句??
哪位朋友指点一下啊?
谢谢!

21 回复
#2
bupthehe2007-08-08 08:50
刚才试了一下,程序是无限循环的

所以不会输出那句话的
#3
ertcvb2007-08-08 09:24

#include <iostream>
我现在只看出来,是不是你少写了一点什么#inlude<iostream.h>应该是这样吧

#include <string>还有这个while ( cin >> word )你这个语法也错了吧,(表达式)能必须能计算出表达式的值为真或者为假呀,不知道你想写什么,你把题目发一下吧,我是菜鸟,可能可以告诉你怎么写哦

#4
bupthehe2007-08-08 09:40
以下是引用ertcvb在2007-8-8 9:24:56的发言:

#include <iostream>
我现在只看出来,是不是你少写了一点什么#inlude<iostream.h>应该是这样吧

#include <string>还有这个while ( cin >> word )你这个语法也错了吧,(表达式)能必须能计算出表达式的值为真或者为假呀,不知道你想写什么,你把题目发一下吧,我是菜鸟,可能可以告诉你怎么写哦

#include <iostream>是C++的写法
#include <iosteam.h>是C的写法,两个都对
while(cin>>word)这个语法也对
调用cin时,如果如数正确,则默认返回值为真,因而while语句成立

#5
aipb20072007-08-08 10:11

哪有什么无限循环。

想跳出循环,不想继续输入了,直接按f6+回车,或者ctrl+z回车,这是输入文件结束符。

#6
狂人老大2007-08-08 12:58
以下是引用ertcvb在2007-8-8 9:24:56的发言:

#include <iostream>
我现在只看出来,是不是你少写了一点什么#inlude<iostream.h>应该是这样吧

#include <string>还有这个while ( cin >> word )你这个语法也错了吧,(表达式)能必须能计算出表达式的值为真或者为假呀,不知道你想写什么,你把题目发一下吧,我是菜鸟,可能可以告诉你怎么写哦

#include <iostream>是标准C++里的
#inlude<iostream.h>是传统C++里的
#include <string>表示要输出字符数组
while ( cin >> word )表示是否输入字符 这是个无限循环的 跳不出去的啊

#7
狂人老大2007-08-08 13:00
呵呵 原来F6+回车键就是跳出啊
#8
xingsou2007-08-08 18:27
顶五楼
#9
blueboy820062007-08-08 19:40
回复:(aipb2007)哪有什么无限循环。想跳出循环,不...

哦,我还一直没弄明白什么是结束符呢~
多谢了!

#10
vn1986512007-08-08 20:27

while ( cin >> word )
cout << "word read is: " << word << '\n';

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;

我怎么感觉while之后的一个语句应该用括号扩起来呢。。。

while ( cin >> word )

{

cout << "word read is: " << word << '\n';

}

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;

比如这样
要不然每次输入一个非零数都会输出ok: no more words to read: bye!的吧,加了括号之后就不会了,当你输入结束的时候输入0,就会跳出循环,输出提示语句
ok: no more words to read: bye!
初学者,请多指教!
#11
狂人老大2007-08-08 20:44
可是我输入非零数也会输出word read is。。。。的啊
只有照5楼说的才可以跳出来的
#12
vn1986512007-08-08 20:50
输入非零当然出word read is这句啊,因为你输入非零,所以while的判断条件成立,执行后面的语句
当你输入零的时候,while语句的条件不成立,则跳出while循环,执行cout << "ok: no more words to read: bye!\n";
程序不就停了么?
你加了那2个{}括号了么?
#13
野比2007-08-08 20:51
以下是引用aipb2007在2007-8-8 10:11:52的发言:

哪有什么无限循环。

想跳出循环,不想继续输入了,直接按f6+回车,或者ctrl+z回车,这是输入文件结束符。

Ctrl + Break... 秒杀任何DOS程序...

#14
狂人老大2007-08-08 21:28
以下是引用vn198651在2007-8-8 20:50:15的发言:
输入非零当然出word read is这句啊,因为你输入非零,所以while的判断条件成立,执行后面的语句
当你输入零的时候,while语句的条件不成立,则跳出while循环,执行cout << "ok: no more words to read: bye!\n";
程序不就停了么?
你加了那2个{}括号了么?

可是这里输入的是字符啊,如果while()括号里的是数值,那么可以判断跳出循环。
但是这里是字符也一样的吗?
我输入0也是同样的反应啊,还是跳不出循环啊!!

#15
aipb20072007-08-08 21:58
to 狂人老大:
cin >> word

这个句子作为条件,请区别于单独word作为条件,cin >> word操作返回的并非word,所以你不能以 word的值来判断0或者非0。这个句子返回的是个流状态,当一次输入合法正确时,返回真,非法错误时,为假。

再有"0" != 0
#16
狂人老大2007-08-08 22:31
以下是引用aipb2007在2007-8-8 21:58:15的发言:
to 狂人老大:
cin >> word

这个句子作为条件,请区别于单独word作为条件,cin >> word操作返回的并非word,所以你不能以 word的值来判断0或者非0。这个句子返回的是个流状态,当一次输入合法正确时,返回真,非法错误时,为假。

再有"0" != 0

那么你的意思就是输入0也不回跳出循环了吧
只能是你说的用F6+回车键了吧
那就对了 加了{}也是没有用的

#17
lijy5202007-08-09 18:59
"0" != 0
#18
wwyinhuabin2007-08-10 11:29

#include <iostream>
using namespace std;

#include <string>

int main()
{
string word;
cin >> word

while ( word!="/" )
{cout << "word read is: " << word << '\n';
cin>>word;
}

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;
}

加了个判断 应该就行了

#19
alleks2007-08-10 12:19
以下是引用vn198651在2007-8-8 20:27:20的发言:

while ( cin >> word )
cout << "word read is: " << word << '\n';

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;

我怎么感觉while之后的一个语句应该用括号扩起来呢。。。

while ( cin >> word )

{

cout << "word read is: " << word << '\n';

}

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;

比如这样
要不然每次输入一个非零数都会输出ok: no more words to read: bye!的吧,加了括号之后就不会了,当你输入结束的时候输入0,就会跳出循环,输出提示语句
ok: no more words to read: bye!
初学者,请多指教!

1.while中本来就只有一句,不用加括号的.
2.输入0也没用,要输结束符ctrl+Z才对

#20
DMC_YA2007-08-10 12:24
word定义的时候被定义为字符串,所以输入任何东西在内存地址中都存有值,且都是为真1。所以会一直循环下去。

“字符串有字节大小与合法与不合法之分,似乎没有真假之分。数字中的0为假,其他数字与字符串都为真!”我不知道这句话对不对,望指教。
#21
DMC_YA2007-08-10 12:25
如果把word定义为int型的话输入0应该就可以退出了!
#22
blueness212007-08-11 20:10
以下是引用狂人老大在2007-8-8 12:58:33的发言:

#include <iostream>是标准C++里的
#inlude<iostream.h>是传统C++里的
#include <string>表示要输出字符数组
while ( cin >> word )表示是否输入字符 这是个无限循环的 跳不出去的啊

1--#include<iostream.h>
2--#include<iostream>
using namespace std;
1和2的效果是一样的,我一个朋友讲的哈,我也不是很懂的.

[此贴子已经被作者于2007-8-12 19:18:54编辑过]

1