chein cin结果c ++

时间:2014-08-22 16:41:29

标签: c++ input

我需要请求一个数组的大小,该数组应该是正数。看看它的输入和检查功能。

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”。请帮忙。抱歉不好英语=)

1 个答案:

答案 0 :(得分:3)

当输入流进入错误状态时,您必须:

  1. 清除状态。
  2. 放弃当前输入。
  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;
    }