사용자가 입력하는 입력 유형을 확인해야하며 원하는 유형이 아닌 경우 오류 메시지를 인쇄해야합니다. 내 코드는 다음과 같습니다Qt에서 C++로 유형을 확인하는 방법
int ClassInput::inputInt(QString str)
{
signed int l;
std::cout << str.toStdString();
std::cin>>l;
while(!l)
{
eh.handleError(1);
std::cin>>l;
cin.clear();
cin.ignore (1000, '\n');
}
return l;
}
하지만 문제는 부동 소수점 값이 입력 될 때 오류 메시지가 인쇄되지이다. 또한, 오른쪽 입력이 입력 된 것처럼 다음 단계로 진행하여 계산을 수행합니다.
때로는 오류 문을 무한히 인쇄합니다. 누구든지 내 코드를 수정할 수 있습니까?
당신은 문자열로 입력을 읽어야한다고 생각하고 그것을 확인할 수 있습니다 ... hm if (! sscanf (in_str.c_str(), "% d", & some_int_var)) {error(); } 내 pov에서 "std :: cin >>"어떤 문자열 (항상 확실하지 않음)과 함께 항상 작동합니다. 또한 "if (! (std :: cin >> l)) {error();}" – user928204
을 입력 할 수 있습니다. 안전하게 입력하려면 입력에서 std :: string을 가져와 구문 분석해야합니다. – k06a
사용자가 유형을 입력하지 않고 특정 형식으로 값을 입력하면 형식이 사용자의 기대치와 일치하는지 확인해야합니다. – stefan