我正在编写一个模板函数,它将检查用户是否分配了答案应该包含的正确数据类型。例如:
int main(){
int E;
cout<<"Enter an integer: "<<endl;
E = clear_and_read<int>(cin);
cout<<E<<endl;
}
其中函数clear_and_read
定义为:
template <class T> T clear_and_read(istream& inputstream){
cin.sync();//removes anything still in cin stream
cin.clear();
T input;
inputstream>>input;
while(inputstream.fail()){
cout<<endl<<"Please ensure you are inputting correct data type. Suggested data type: "<< typeid(input).name() <<"."<<endl;
cin.sync();
cin.clear();
inputstream>>input;
}
return input;
}
现在,如果我尝试输入 astring
而不是a ,这将起作用integer
,但是当我输入 a 时double
,它只会分配它的第一个值。例如 5.678 变为 5。
double
如果 a被读入a ,我可以在模板函数中做些什么来标记int
?