回答が含まれるべき正しいタイプのデータがユーザーに割り当てられているかどうかを確認するテンプレート関数を作成しています。次に例を示します。
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;
}
string
これで、の代わりに入力しようとすると機能しますinteger
が、入力するdouble
と最初の値が割り当てられます。たとえば、5.678は5になります。
double
テンプレート関数内で、aが読み込まれている場合にフラグを立てるために何ができint
ますか?