c++ - 检查用户是否向 int var 输入了一个 float ?

标签 c++

我有一个 int 变量;并使用 cin,但如何检查用户是否输入了 float 或为我提供此问题的解决方案?

最佳答案

没有简单的方法可以做到这一点。通过 >> 运算符 输入实际上不是为了与可能输入错误内容的人进行交互。您必须将输入作为字符串读取,然后使用 strtol 之类的函数或您自己的手动代码对其进行检查。

这是使用 strtol 的方法的概述:

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

bool GetInt( istream & is, int & n ) {
    string line;
    if ( ! getline( is, line ) ) {
        return false;
    }
    char * ep;
    n = strtol( line.c_str(), & ep, 10 );
    return * ep == 0;
}


int main() {
    int n;

    while(1) {
        cout << "enter an int: ";
        if ( GetInt( cin, n ) ) {
            cout << "integer" << endl;
        }
        else {
            cout << "not an integer" << endl;
        }
    }
}

关于c++ - 检查用户是否向 int var 输入了一个 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3403632/

相关文章:

c++ - 对象指针的全局 vector 错误 c++

c++ - : expected constructor,析构函数错误,还是 '' token之前的类型转换?

c++ - 我们应该在通过引用传递之前取消引用指针吗?

c++ - 有什么办法可以用模板制作容器模板吗?

c++ - QuaZip - 受密码保护的文件

c++ - max_digits10 的用途是什么?它与 digits10 有何不同?

c++ - MBCS 到 UTF-8 C++

c# - 类之间的聚合和组合关系

c++ - 需要帮助开始使用 Boost.Python

c++ - 在 C++ 中搜索文件夹