c++ - 如何让用户输入正双变量?

标签 c++

我希望用户输入一个正 double 变量。如果他们输入任何其他内容,我希望程序循环并继续要求他们输入数字,而不是出现错误并关闭。我用条件语句和中断做了一个无限循环。出于某种原因,如果他们输入的不是正数,它会无限地询问半径。有人可以帮我解决这个问题吗?

for(;;) {
    cout << "Radius: ";
    cin >> radius;
    if(radius > 0){
        break;
    }
}

最佳答案

您可以简单地检查cin 的流状态:

    double radius;
    for(;;) {
        cout<<"Radius: ";
        if(!(cin>>radius) || radius < 0.0) {
             cout << "Invalid input, please enter a positive double value." << endl;
             cin.clear();
             std::string dummy;
             cin >> dummy; // Read the left invalid input
        }
        else {
           break;
        }
    }

关于c++ - 如何让用户输入正双变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29882765/

相关文章:

C++ 二维动态数组崩溃

c++ - 函数调用时出现 PyObject 段错误

c++ - SDL 无法创建 OpenGL 窗口

c++ - 通过指针值将数据传递给 dll

C++11 堆栈变量的线程安全

c++ - 从 std::vector c++ 调用 std::function 时崩溃

c++ - 在运行程序之前加载/注册 DLL

c++ - C 指针数组作用域和函数调用

c++ - 使用 boost spirit x3 解析为递归变体的问题

c++ - 代码块中的相对路径如何工作?