为何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;
}
#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;
}
在程序中循环输入字符串,然后显示,用的是 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;
}
#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默认情况下以回车(' ')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。
while (cin>>line)
cout<<line<<endl;