看看下面这段代码:
#include <iostream>
using namespace std;
int main()
{
int n;
string passage;
cout<<"请输入n:";
cin>>n;
cout<<n<<endl;
cout<<"请输入passage:";
getline(cin,passage);
cout<<passage;
}
可以看到,还没来得及输入passage程序就结束了。造成程序错误结果的原因是,在输入完相应的数字后按回车结束输入,把“\n”留在了输入流里,而cin不会主动删除输入流内的换行符,这样换行符就被getline读取到,getline遇到换行符返回,程序不会等待下一个输入,因此这里出现了一个没有结果的输出,getline读入了cin之后的回车换行符。
修改方法为:将n也改成getline(cin,n)。