对outbounded char-Array进行错误检查 - 使用std :: cin

时间:2014-05-22 19:31:09

标签: c++ error-handling cin

使用std :: cin时,如何对charlength的出站进行错误检查?

char _charArr[21];
bool inputNotVerified = true;
while (inputNotVerified) {
     cout << "input a string no more than 20 chars: ";
     cin >> _charArr;  
 // if the errorchecking works the boolean should be set to false 
}

如上面的评论中所述 - 唯一可以打破循环的是输入正确 - 即不超过20个字符。但是我该如何实现呢?

我试图用strlen(_charArr)创建一个条件,但没有成功。

1 个答案:

答案 0 :(得分:1)

使用std::istream::getline()

if (std::cin.getline(_charArr, sizeof _charArr) && std::cin.gcount()) {
    // ...
}

std::istream::getline()只会读取第二个参数提供的最多count个字符。 gcount()用于检查是否已读取至少一个字符。