c++ - 将 cin 数据提取到适合的变量

标签 c++ string input error-handling cin

如果输入无效,我想从 cin 中提取无效输入并将其存储在适合的变量中。我怎样才能做到这一点?

#include<iostream>

using namespace std;

int main(){
    int number;
    cout << "Enter a number: " << endl;
    cin >> number;

    if(cin.fail()){
    cout << "Error!" << endl;
    //HOW CAN I STORE THE INVALID INPUT WHICH IS STORED IN cin INTO A STRING?
    }   

return 0;

最佳答案

当您检测到 failbit 已设置时,将其重置,并使用 std::getline 将整行无效输入读入 std::string 来自 std::cin:

#include <iostream>
#include <string>


int main()
{
        int number;

        while(true)
        {
                std::cout << "Enter a number (0 to exit): " << std::endl;
                std::cin >> number;

                if(std::cin.fail())
                {
                        std::string error_data;
                        std::cin.clear(std::cin.rdstate() & ~std::ios::failbit);
                        std::getline(std::cin, error_data);
                        std::cout << "You didn't enter a number - you've entered: " << error_data << std::endl;

                }
                else
                {
                        std::cout << "Number is: " << number << std::endl;
                        if(number == 0)
                        {
                                break;
                        }
                }

        }
        return 0;
}

关于c++ - 将 cin 数据提取到适合的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22877965/

相关文章:

java - 在java中处理输入流溢出(零窗口)

C++:输入和输出流运算符:关联性

c++ - 如何在 C 代码上从终端运行 Google 测试?

c++ - 在 xcode 4 中找不到文件

java - java中数组越界异常

c - 在 C 中,我打印字符串中最大回文的代码没有打印整个回文字符串?

javascript - html5数据库将'?!&等作为特殊字符保存在html5数据库中

jquery - jQuery 中的输入问题

c++ - 为什么 C++ 20 中没有枚举概念?

c++ - 如何将 vector 大小分配给数组大小C++?