| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2446 人关注过本帖
标题:用getline读取整行文本,怎么退不出循环?
只看楼主 加入收藏
fengshaoqing
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-5-28
收藏
 问题点数:0 回复次数:15 
用getline读取整行文本,怎么退不出循环?

用getline读取整行文本,怎么退不出循环?
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;
int main()
{
string line;
while (getline(cin,line))
cout<<line<<flush;
cout<<"the end";
getch();
return 0;
}

搜索更多相关主题的帖子: getline 文本 include string cout 
2006-05-28 10:43
xialup
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-3-20
收藏
得分:0 
我用DEV-C++跑没问题呢`

2006-05-28 10:57
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
如果使用的是visual c++6.0, 可以修改<string>头文件。
<string>中对getline(cin,str)的定义包含:
else if (_Tr::eq((_E)_C,_D))
{ _Chg=true;
_I.rdbuf()->snextc();
break; }
将 _I.rdbuf()->snextc(); 这一行替换为 _I.rdbuf()->sbumpc(); 就可以了。

该文件的一般路径:C:\Program Files\Microsoft Visual Studio\VC98\Include\string 注意是string文件,不是string.h

2006-05-28 11:03
fengshaoqing
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-5-28
收藏
得分:0 
问题依旧

改过后,问题依旧,我用的就是VC++6.0,能给解释一下为什么这么改吗?不胜感激,这是C++ Primer 中文版(第4版)上72页的一个例子,本来想通过getch()接受一个字符,关闭运行窗口,结果发现根本就不运行cout<<"the end" 和 getch() 这两句,忘赐教!

2006-05-28 13:47
xialup
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2006-3-20
收藏
得分:0 
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;
int main()
{
string line;
while (getline(cin,line))
cout<<line<<flush<<endl
<<"the end";
getch();
return 0;
}
应该与这个循环条件有关系吧~

[此贴子已经被作者于2006-5-28 15:24:44编辑过]


2006-05-28 15:11
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 

为什么需要修改string?
这是参考了
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q240015
使你输入完字符串后按一次回车就将字符串显示


2006-05-28 16:04
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
为什么xialup的修改可以
还请各位指教

2006-05-28 16:31
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
你是说lz的不行,5楼的可以?
他们的区别就在于多了一个endl;
endl相当于ends+flush;所以可能是cout<<flush了两次的缘故.

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-28 18:07
fengshaoqing
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-5-28
收藏
得分:0 
我的猜想

5楼的也不行,我试过了,还是退不出循环,我猜想是因为getline()的返回值cin对象总是被判断输入有效,所以总是退不出循环.不知道哪位高手确认并解决一下
另外,在控制台下,到底能不能通过程序来关闭运行窗口呢


2006-05-28 21:15
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我最近已经有几次听说getline()的问题了,都听他们说是这个函数有问题,我也不太清楚

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-28 21:19
快速回复:用getline读取整行文本,怎么退不出循环?
数据加载中...
 
   



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

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