标题:关于 while(getline(cin,line))的问题,
只看楼主
sadan20111
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2009-8-1
结帖率:100%
已结贴  问题点数:20 回复次数:11 
关于 while(getline(cin,line))的问题,
#include   <iostream>
#include  <string>  
  
  using namespace std;  
  
  main()   
  { int i=3;
   string   line;   
  while(getline(cin,line))
  {  
  cout<<line<<endl;
  
  }
 cout<<i<<endl;
  
  
  return 0;
  }
 
 
这个程序好像是个死循环,怎么能跳出循环,执行cout<<i<<endl;这句话呢,while是以istream类对象为判断条件的,那不就是遇到结束或是无效输入就跳出循环体吗?那string中,getline不是不能忽略换行符?那回车了,为什么还挑不出来呢?怎么能跳出来啊,就是什么样子才是条件才为假的啊??谢谢
搜索更多相关主题的帖子: line cin 
2009-08-01 14:01
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:10 
回复 楼主 sadan20111
用EOF就可以终止循环。
如果你用的windows,可以试试输入几行文字之后,按一下Ctrl + Z。
2009-08-01 18:28
sadan20111
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2009-8-1
得分:0 
回复 2楼 pangding
谢谢2楼,但是也是不行的,我输入结束符也是不可以的,还是挑不出来,还是被当成有效字符了,什么原因呢??2楼能试试程序吗?我是VISTA的系统,是不是结束符不一样呢??
2009-08-01 20:59
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
回复 3楼 sadan20111
我想应该行呀,你多输入几次ctrl-z试试呢?你用的是什么编译器?
(抱歉,我现在试不了你的程序。现在我在别人家,他的电脑里没有编译器……)
2009-08-01 23:59
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
得分:5 
在Visual C++ 6.0中,按两次【Ctrl+Z】可以退出,但是,输出比输入滞后一行。
2009-08-02 00:17
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
回复 5楼 CrystalFan
嗯,我想也是这上问题。VC6.0有个BUG,就是它的行输入行再输完回车之后还要再输入一个字符才行,去网上搜一下,有解决这个BUG的方法~
2009-08-02 10:27
sadan20111
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2009-8-1
得分:0 
回复 6楼 pangding
谢谢各位,我用的也是VC6.0,可是我输入一行文字以后,输入几次结束符都没有用,要按回车输出文字以后,然后输入结束符,要按超过好几次,就是说要回车几次,每次回车都输入结束符,才能跳出循环。。。。请问5楼,两次你就跳出循环了吗啊?你是在输入文字以后输入结束符吗??
2009-08-02 12:33
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
回复 7楼 sadan20111
你是怎么输入结束符的?
2009-08-02 14:55
sadan20111
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2009-8-1
得分:0 
回复 8楼 leeco
输入几次ctrl+z啊,VISTA难道和XP的不一样吗?
2009-08-02 15:09
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:5 
回复 9楼 sadan20111
要在行首输入ctrl+z然后回车。

不过你也可以用下面这个程序

#include <stdio.h>
main()
{
    putchar(-1);
    putchar('0');
}

然后把程序输出的0前面那个空格一样的字符复制下来,这个字符就是EOF,你可以在需要输入EOF的地方粘贴进去,绝对奏效
2009-08-02 15:42



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




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

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