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/

相关文章:

c++ - 按位 & 运算符返回 255

c++ - uint8_t 类型的 sscanf 占位符是什么?

c++ - 在 C++ 中扩展 Thrift 生成的对象

c++ - Cuda寄存器编译器优化

java - 迭代 nextLine 函数的问题

c - 为什么这个 C for 循环不能正常工作?

javascript - 打字时增加输入高度

java - countTokens() 在用户输入时总是返回 1

c++ - 根据输入调用不同类的构造函数

python - 在 Automator 工作流程中传输参数。 Python 外壳