输入将被跳过。这是一个如此简单的程序,但我不明白为什么它会跳过这一步。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int repeat;
string message;
cout<<"Computer Punishment"<<endl;
cout<<"-----------------------"<<endl;
cout<<"Repititions? ";
cin>>repeat;
cout<<"Message? ";
getline(cin, message);
for(int i=0;i<repeat;i++)
{
cout<<message<<endl;
}
}发布于 2021-10-06 06:28:16
此问题是由于cin和getline行为造成的。
当你读取第一个数字时,输入流看起来是这样的:
before cin:
2\n
^
after cin:
2\n
^cin只读取所需的数字,然后插入符号指向\n符号。
默认情况下,getline从当前插入符号位置读取到\n,在本例中,它读取一个空字符串。所以你需要在getline之前阅读这个\n (这只是一个解决方案),然后你的代码就可以工作了:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int repeat;
string message;
cout<<"Computer Punishment"<<endl;
cout<<"-----------------------"<<endl;
cout<<"Repititions? ";
cin>>repeat;
cout<<"Message? ";
cin.get() // get '\n' symbol
getline(cin, message);
for(int i=0;i<repeat;i++)
{
cout<<message<<endl;
}
}https://stackoverflow.com/questions/69460731
复制相似问题