我可以看出标题可能有点令人困惑。基本上,我希望用户按enter键10次以结束循环。但实际上我必须输入一些东西才能计数,我估计这是因为我给了“无用的”一个数据类型char,但我应该给它分配什么,这样我只需按enter键,它就会接受呢?谢谢!
void mineFunc(){
//Mining Function
int durability = 10;
char useless; //Just so user can tap enter to 'mine'
cout << "Tap Enter to Mine" << endl;
do {
cin >> useless;
durability -= 1;
cout << "Durability: " << durability << endl;
} while (durability > 0);
gold += 5;
}发布于 2017-05-06 12:23:49
您可以在流上使用IO操纵器std::noskipws,但是因为它是cin,所以您可能不想让它处于该状态。而且你必须保存/恢复之前的状态,才能很好地处理程序的其他部分。
一种更简单的方法是像下面这样循环:
while( cin && cin.get() != '\n' );现在,如果流失败,您想要中断您的循环。你可能想把它包装得更好一些:
istream & wait_enter( istream & s )
{
while( s && s.get() != '\n' );
return s;
}然后你就有了:
do {
if( !wait_enter(cin) ) break;
durability -= 1;
cout << "Durability: " << durability << endl;
} while (durability > 0);由于IO操纵器的工作方式,您甚至可以这样做(如果您喜欢这种风格):
if( !(cin >> wait_enter) ) break;发布于 2017-05-06 13:05:50
感谢大家的帮助!
我发现
cin.get(useless);成为解决这个问题的最简单、最有帮助的方法。
https://stackoverflow.com/questions/43816632
复制相似问题