检查输入是一个有效的整数

时间:2012-09-28 11:09:37

标签: c++

嗨,任何人都可以帮助我。我需要检查我的输入只包含整数。我从查找中猜测我使用isDigit函数,但我不知道如何使用它来检查整数。

我正在使用C ++与MSI交互,所以我得到的整数如下:

hr = WcaGetProperty(L"LOCKTYPE",&szLockType);
ExitOnFailure(hr, "failed to get the Lock Type");

我想我必须将szLockType更改为char,然后使用isdigit扫描每个字符,但我不知道如何实现它。任何帮助将不胜感激。 P.s我是初学者,请原谅这是一个非常微不足道的问题.. :)

2 个答案:

答案 0 :(得分:2)

使用std::stoi()。如果字符串不是整数值,您将得到异常。

答案 1 :(得分:0)

szLockType的类型是什么?

它是一个以空值终止的字符串吗?

然后,您可以使用数组语法来获取单个字符。

for(int i = 0; i < std::strlen(szLockType); i++) {
    if(!std::isDigit(szLockType[i])) {
         // it contains a non-digit - do what you have to do and then...
         break; // ...to exit the for-loop
    }
}

或者它是一个std :: string?然后语法略有不同:

for(int i = 0; i < szLockType.length(); i++) {
    if(!std::isDigit(szLockType.at(i)) {
         // it contains a non-digit - do what you have to do and then...
         break; // ...to exit the for-loop
    }
}