나는 사용자가 답변에 있어야하는 데이터의 정확한 유형을 할당 한 경우 확인하는 템플릿 함수를 쓰고 있어요에 IStream을 입력에 성공 예를 들면 다음과 같습니다.부동 소수점 데이터가 예기치 않게 정수
int main(){
int E;
cout<<"Enter an integer: "<<endl;
E = clear_and_read<int>(cin);
cout<<E<<endl;
}
같은 기능
clear_and_read
가 정의
: 내가 대신 integer
의 string
를 입력하려고하면
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;
}
지금이 작품,하지만 난 double
를 입력 할 때 그냥 첫 번째 값의 할당합니다. 예 : 5.678이 5가됩니다.
double
을 int
으로 읽는 중 플래그 기능을 사용하려면 어떻게해야합니까?
'typeid (input)'이것은 생각할 수있는 더 많은 문제를 묻는 것입니다. – orlp
나는 사용자를 돕기위한 제안으로 사용하기 때문에 너무 위험하지 않을 것이라고 생각했다. 코드 내에서 비교하지 않았다. 또한 수정 : sixlettervariables에 감사드립니다. – QuantumO