c++ - 检查输入的类型是否正确

标签 c++ validation templates input

我有一个模板类,它可以接受各种类型:int、double 等。我想检查用户是否输入了正确的类型。如果对象是用 int 实例化的,用户应该输入一个 int,如果是用 double,他应该输入一个 double,依此类推。无论输入来自文件还是键盘,我都希望能够做到这一点。我有 2 个问题。

  1. 我应该检查“>>”运算符重载的定义吗?
  2. 我如何进行检查?我是否创建了一个模板函数来检查任何类型?

我想要这样的东西:

template <class Ttype>
class foo 
{
    Ttype a,b,c; 
    friend istream &operator>> <>( istream &input, foo<Ttype> &X );
    //methods
};

template <class Ttype> istream &operator>>( istream &input, foo<Ttype> &X )
{
    //check if X.a,X.b,X.c are of Ttype
    input>>X.a>>X.b>>X.c;
}

int main()
{
    foo<int> a;
    cin>>a;

    foo<double> b;
    cin>>b;

    return 0;
}

最佳答案

您无法在阅读之前检查输入。我唯一能想到的就是将输入读入一个字符串(这将始终适用于文本文件或标准输入)并尝试将其转换为您期望的类型。在转换过程中,您可以查找异常情况。

关于c++ - 检查输入的类型是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354459/

相关文章:

c++ - 在没有内存复制的情况下左修剪 std::vector

c++ - 剥离项目的最佳 C++ 容器?

JavaScript 表单验证,确保出生日期为 4 位数字

c++ - 初学者模板编译错误 - 无法将函数作为 arg 传递

c++ - 哪个编译器是对的?需要模板化返回类型之前的 'template'?

c++ - 使用指向派生类的指针作为模板参数时出错

c++ - LLVM IR 是否包含内置函数的代码

c++ - 这个 typedef 是什么意思,它有什么用?

PHP is_numeric 或 preg_match 0-9 验证

c# - 将验证规则应用于 ListView 的 ItemsSource 属性