我有以下代码,其中cin在getline之前,getline正在捕获新行,因此没有为其变量赋值;代码是
int main(){
string a,b;
int n;
cin>>n;
getline(cin,a);
cout<<a;
return 0;
}
PS:输入No后我按Enter键,程序结束(i..e getline捕获换行符,所以a为null。如果有人可以建议我学习基本I / O概念的资源,那将会很棒在Cpp)
答案 0 :(得分:4)
当您输入&#34; No&#34;,这不是有效整数时,cin
流在cin >> n
表达式后处于错误状态。因此,没有其他输入可用,特别是您的getline
不会尝试读取一行。
答案 1 :(得分:3)
在调用下一个getline
之前,你必须丢弃你输入的新行字符(如果没有,你只需阅读一个新行字符):
int main()
{
string a,b;
int n;
cin>>n;
cin.ignore (std::numeric_limits<std::streamsize>::max(),'\n'); // <-- Here
// Or cin >> ws suggested by @0x499602D2
getline(cin,a);
cout<<a;
return 0;
}
备注:强>
cin >> n
。