我基本上试图获取用户的名字(我希望他们能够使用空格,这就是为什么我必须使用getline),然后是他们虚构王国的名字。但是当我运行这段代码时,它会先跳过它。它要求输入名称,但随后它会跳过并询问王国名称,甚至允许用户输入其名称。我已经尝试过cin.ignore(),但这不起作用。有人有什么建议吗?
string playerName = "nyd"; //declaring string playerName
string kingdomName = "nyd"; //declaring string countryName
int monarchAge; //declaring monarch age variable.
cout << " Welcome, your majesty! What is your name?\n";
getline(cin,playerName);
cout << " And what is the name of your grand kingdom, " << playerName << "?\n";
getline(cin,kingdomName);
cin.ignore();
cout << " And finally, how old are you, Lord " << playerName << " of " << kingdomName << "?\n";
cin >> monarchAge;
答案 0 :(得分:0)
您提供的代码片段实际上是正确的。我在本地编译时得到了预期的行为。
我仍然认为我可以告诉你代码中发生了什么。我假设您链接的代码段只是程序的一部分,在您失败的代码之前很可能是错误的。尝试将浮点数读入整数变量或类似的东西。这会导致您的信息流(在这种情况下为cin
)被标记为错误。
将流标记为错误后,只会忽略以后对getline()
和operator>>
的所有调用,直到cin.clear()
已被调用以重置错误标记。
所以修复就是,找出导致你的流不好的原因。