我需要请求一个数组的大小,该数组应该是正数。看看它的输入和检查功能。
indexType get_array_size(){
//indexType - size_t; MAX = max of unsigned int
long long ansver;
while(true){
std:: cout << "Enter size of array{0..." << MAX/2-1 << "} ";
bool ans = std:: cin >> ansver;
if(ansver < 0 || !(ans)){
std:: cout << "Incorect size!" << std::endl;
ansver = 0;
continue;
}
break;
}
return ansver;
}
它必须如何运作:如果ansver&lt; 0或输入不正确(例如某些字符)新请求,否则返回获取的值。但实际上只发送第一个请求,如果输入不正确,则只发出cout-s“Incorect size”。请帮忙。抱歉不好英语=)
答案 0 :(得分:3)
当输入流进入错误状态时,您必须:
。
while(true){
std:: cin >> ansver;
if (cin.fail()) {
std::cout << "Bad input!" << std::endl;
cin.clear(); // unset failbit
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
continue;
}
if(ansver < 0 ) {
std::cout << "Incorect size!" << std::endl;
continue;
}
break;
}