【发布时间】:2015-04-18 14:10:07
【问题描述】:
我基本上是在尝试获取用户的名称(我希望他们能够使用空格,这就是我必须使用 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;
【问题讨论】:
-
很可能是stackoverflow.com/questions/21567291/…,而对
ignore的调用很可能只是吃掉了这个时代的第一个字符。 -
你为什么打电话给
cin.ignore();? -
我在某处读到 cin.ignore() 可能会有所帮助,所以我试了一下,但猜不出来
-
@JacobOaks 您在某处读到的有关 cin.ignore 的提示是针对将
cin >> v;与getline混合使用的,这是因为operator>>(istream&, T)通常会忽略行尾的换行符。跨度>