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