| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1495 人关注过本帖
标题:[求助]怎么退出这个循环?
只看楼主 加入收藏
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
 问题点数:0 回复次数:16 
[求助]怎么退出这个循环?
大家帮我看看这个程序怎么退出循环,谢谢了

我在VC6.0里面退不出来,按Ctrl+Z也不好使,怎么回事啊??

#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
cout<<s<<endl;
return 0;
}
搜索更多相关主题的帖子: string include std using 
2007-05-09 15:51
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 

不太清楚,我觉得可能是VC 6不严格遵守标准的原因,有些书上的例子根本运行不对。


2007-05-09 16:13
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
敲两次回车就结束了吧~``

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-05-09 16:19
raulxxyuer
Rank: 1
等 级:新手上路
威 望:1
帖 子:178
专家分:0
注 册:2007-4-23
收藏
得分:0 

getline(),其原型:istream &getline(char *buf,int num,char delim='\n';)
它从输入流中读取字符到buf所指的数组中,直到读满num个字符或遇到delim所指的字符为止.


我很沒用,總是學不會遺忘,總是學不會割捨本不屬於我的東西。
2007-05-09 16:19
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 

那应该用什么编译器比较标准?

敲两次回车也不行,退不出循环,如果没有循环的话,敲两次回车可以正常运行getline()函数

到底是什么原因呢?


Everything is gonna be okay!
2007-05-09 16:35
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 

不行吧?
你给的第一个等价于
int main()
{
string s;
getline(cin,s);
cout<<s<<endl;
return 0;
}
第二个等价于
int main()
{
string s;
cin>>s;
cout<<s<<endl;
return 0;
}

[此贴子已经被作者于2007-5-9 18:28:52编辑过]


Everything is gonna be okay!
2007-05-09 18:28
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

ctrl+z 回车
再ctrl+z 回车


退出


Fight  to win  or  die...
2007-05-09 19:33
weishj
Rank: 1
等 级:新手上路
威 望:2
帖 子:141
专家分:0
注 册:2007-4-22
收藏
得分:0 
我想楼主的意思是想知道退出这个循环的条件,而不是说怎么操作才能让它退出.
getline函数返回的值可能是个指针,我用下面程序测试一下:
#include <iostream>
#include <string>
using namespace std;
void main()
{
string s;
cout<<getline(cin,s)<<endl;
cout<<s<<endl;
}
当随便输入一个字符串时,先输出一个八位十六进制数字,这个数字不为零,所以LZ的循环退不出.
至于这个十六进制代表什么,请高人帮我一下.
刚才说错一点,getline不是string中的但此处其原型应该是
template<class E, class T, class A>
basic_istream<E, T>& getline(
basic_istream <E, T>& is,
basic_string<E, T, A>& str);

[此贴子已经被作者于2007-5-9 20:32:10编辑过]


If you shed tears when you miss the sun, you also miss the stars.
2007-05-09 20:15
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 
谢谢大家的回复!

谢谢大家的回复

9楼的可以说说为什么需要两次ctrl+z吗?(而且还得两次ctrl+z回车操作相邻才行?)

[此贴子已经被作者于2007-5-9 22:05:21编辑过]


Everything is gonna be okay!
2007-05-09 22:00
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
以下是引用jiaju111在2007-5-9 22:00:12的发言:

谢谢大家的回复

9楼的可以说说为什么需要两次ctrl+z吗?(而且还得两次ctrl+z回车操作相邻才行?)


我是这样理解的,但是不知道对不对。

因为是提取string的值,所以ctrl+z会被首先判断为字符串,再加上一个ctrl+z就可以表示想输入的确实是文件终止符。纯属猜想,呵呵。


Fight  to win  or  die...
2007-05-10 09:06
快速回复:[求助]怎么退出这个循环?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014399 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved