标题:用getline读取整行文本,怎么退不出循环?
只看楼主
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
得分:0 
为什么xialup的修改可以
是我弄错了
但对于文件输入
如果getline()成功地读入一行它返回true如果到达输入结束,则返回false
比如
ifstream in(__FILE__);
string line;
while(getline(in,line))
cout<<line<<endl;
会打印源程序
看来得有一种键盘输入eof的方法。


2006-05-28 23:05
桂圆
Rank: 1
等 级:新手上路
威 望:1
帖 子:101
专家分:0
注 册:2006-5-15
得分:0 
C++ Primer 中文版(第4版) 使用的是 VS2003 版本的 VC6.0 和2003 还是有一点区别的


2006-05-28 23:21
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
这才是getline(istream,string,char='\n')的原形,有默认参数的,最后的 char就是结束符

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-29 09:39
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;
}
只执行循环体内语句应该与这个循环条件是否为真有关系吧~
getch()好象是从键盘上读人字符并不在屏幕上显示的~~
是否可以不用呢? 还请高手指教呢`~


2006-05-29 10:43
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

可以不用,因为他在这里只是起到system("pause");的作用


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-05-29 10:45
fengshaoqing
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-5-28
得分:0 
好像是这样子的,似乎还真的退不出循环


好像是这样子的:
标准库给出了非成员的getline()实例,它可以输入到一个string对象中,原型如下:
getline( istream &is, string str, char delimiter );
这个getline()实例的行为如下:读入最大数目为str::max_size-1个字符。如果输入序列超出这个限制,则读操作失败,并且istream对象被设置为错误状态;否则,当读到delimiter(它被从istream中丢弃,但没有被插入到string中)或遇到文件结束符时,输入结束。

而max_size()的返回值为 4294967293
所以,getline的返回值一般是正确的

2006-05-29 22:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-67911-1-1.html




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

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