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/

相关文章:

javascript - 在名称属性中使用方括号输入

c++ - 为什么 std::cin 的提取器操作符等待用户输入?

c++ - 如何优化c++二进制文件读取?

c++ - 在 C/C++ 中将矩阵读取为二维数组

c++ - 为什么 std::function 作为 std::not2 的参数?

Python 用户输入回放

c++ - 是否有用转义序列替换 xml 特殊字符的 c++ 函数?

c++ - 将位图转换为垫子

c++ - Visual Studio 不区分 C header 和 C++ header

c++ - 使用 Linux 访问并口