为何getline(cin,line),第一次输入总是不认呢?(帮看几行代码)#include <iostream>
#include <string>
using namespace std;
int main()
{
string line;
int i=0;
while (getline(cin,line))
{
i=i++;
cout << i << endl;
cout << "|" << line << "|" << endl;
}
return 0;
}

解决方案 »

  1.   

    自顶一下,据网友说,只有vc6会有这个问题,我没用过别的编译器,我是在vc6环境下试的。
      

  2.   

    几行代码不明白,为何第一次循环,要按两个回车呢?
    在程序中循环输入字符串,然后显示,用的是 getline(cin,line),但是第一次输入后,总要按两次回车,但以后就不用了。
    我不明白,getline(cin,line)的运行机理是什么?
    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
    string line;
    int i=0;
    while (getline(cin,line))
    {
    i++;
    cout << "下面是第:" <<  i << "次输出。" << endl;
    cout << "|" << line << "|" << endl;
    }
    return 0;
    }
      

  3.   


     #include <iostream>
     #include <string>
     using namespace std;
     void main(void)
      {
         string st ;
         cout<<"Input st:";
         getline(cin,st);
         cout<<st<<endl;
     }
     
     上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面出现的情况,有人说getline默认情况下以回车(' ')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。
      

  4.   

    上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面出现的情况,有人说getline默认情况下以回车(' ')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。这个循环可以用下面代码替代
    while (cin>>line)
          cout<<line<<endl;
      

  5.   

    这个我明白,我第一次按的回车,getline()做为字符串的一部分了。但是为何从第二次循环开始,就不用按两次回车了呢?