getline函数的疑问有什么?

getline函数的疑问有什么?

getline函数的疑问有什么?下面是C++Primer中的一段代码:
getline函数的疑问有什么?
getline函数的疑问有什么?
intmain()
getline函数的疑问有什么?getline函数的疑问有什么?
{
getline函数的疑问有什么?
stringline;
getline函数的疑问有什么?
while(getline(cin,line))
getline函数的疑问有什么?cout
<<line<<endl;
getline函数的疑问有什么?
return0;
getline函数的疑问有什么?}

getline函数的疑问有什么?我按照此代码编译运行后发现,在输入一行字符串后必须进行2次回车换行,程序
getline函数的疑问有什么?
getline函数的疑问有什么?才会输出该字符串,就是说不能及时看到最近的输出信息。
getline函数的疑问有什么?
getline函数的疑问有什么?这和
getline函数的疑问有什么?
while(cin>>line)
getline函数的疑问有什么?cout
<<line<<endl;
getline函数的疑问有什么?有很大区别,利用cin在输入一行字符串只经过一次回车换行,立刻就能输出该字
getline函数的疑问有什么?
getline函数的疑问有什么?符串的信息。
getline函数的疑问有什么?
getline函数的疑问有什么?请教高人:同样是输入,同样使用while语句,为何会造成这样的差别?

有人回复说是VC的BUG,不知道是否属实,下面是一种我比较认同的解释:

getline函数的疑问有什么?MyTurn原创2006-07-1911:15:54查看评论
getline函数的疑问有什么?#include
<iostream>
getline函数的疑问有什么?#include<string>
getline函数的疑问有什么?usingnamespacestd;
getline函数的疑问有什么?
voidmain(void)
getline函数的疑问有什么?getline函数的疑问有什么?
{
getline函数的疑问有什么?
stringst;
getline函数的疑问有什么?cout
<<"Inputst:";
getline函数的疑问有什么?getline(cin,st);
getline函数的疑问有什么?cout
<<st<<endl;
getline函数的疑问有什么?}

getline函数的疑问有什么?
getline函数的疑问有什么?上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成getline(cin,st,
's');即使输入的是abcsabc那么也只会显示abc,因此对于上面出现的情况,有人说getline默认情况下以回车(' ')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。也有人说这是VC6的bug,我觉得前一种解释比较合理,因为:
getline函数的疑问有什么?
getline函数的疑问有什么?如果你输入abc(回车)abc,那么程序会显示abc,可见回车的确是函数默认的结束符。

关于getline函数:

getline函数的疑问有什么?Getline函数是编辑控件的成员函数,读取控件里的内容cin.getline是从屏幕读入字符串。MFC中有文件类的read函数从文件读取数据。
getline函数的疑问有什么?或不用MFC用文件流提取操作符
<<
getline函数的疑问有什么?
getline函数的疑问有什么?怎么结束这个循环?
getline函数的疑问有什么?
getline函数的疑问有什么?答案:用Ctrl
+C

下面是添加完整的测试源码:

getline函数的疑问有什么?#include<iostream>
getline函数的疑问有什么?#include<string>
getline函数的疑问有什么?usingnamespacestd;
getline函数的疑问有什么?
intmain()
getline函数的疑问有什么?getline函数的疑问有什么?
{
getline函数的疑问有什么?
stringline;
getline函数的疑问有什么?
while(getline(cin,line))
getline函数的疑问有什么?cout
<<line<<endl;
getline函数的疑问有什么?
return0;
getline函数的疑问有什么?}

getline函数的疑问有什么?

源码2:

getline函数的疑问有什么?#include<iostream>
getline函数的疑问有什么?#include<string>
getline函数的疑问有什么?usingnamespacestd;
getline函数的疑问有什么?
intmain()
getline函数的疑问有什么?getline函数的疑问有什么?
{
getline函数的疑问有什么?
stringline;
getline函数的疑问有什么?
while(cin>>line)
getline函数的疑问有什么?cout
<<line<<endl;
getline函数的疑问有什么?
return0;
getline函数的疑问有什么?}

getline函数的疑问有什么?