C++ |在不提供值的情况下接受用户输入

标签 c++ input

我可以看出标题可能有点困惑。基本上我希望用户按回车键 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;

}

最佳答案

好吧,你可以使用 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;

关于C++ |在不提供值的情况下接受用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43816632/

相关文章:

python - 使用 Python 说明读取 API 结果

c++ - 模板实例化中模板模板参数的可能形式

c++ - MFC 中 CTabCtrl 与 CPropertySheet 哪个更受欢迎?

c++ - 互斥锁如何确保变量的值在内核之间保持一致?

c# - 在结构 C# 中使用半字节

JavaScript:input.focus() 并显示 Cursor

c++ - 时间序列 "forecast"来自 C++ 的 R 包

javascript - 使用 Javascript 对文本区域和输入进行计数

html - 文本框/输入文本元素长于应有的长度

javascript - 关于更改隐藏输入