0

嗨,谁能帮帮我。我需要检查我的输入是否只包含整数。我从查找中猜测我使用了该isDigit功能,但我不确定如何使用它来检查整数。

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

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

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

4

2 回答 2

2

使用std::stoi()。如果字符串不是整数值,则会出现异常。

于 2012-09-28T11:15:05.667 回答
0

szLockType 的类型是什么?

它是一个以 null 结尾的字符字符串吗?

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

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
    }
}
于 2012-09-28T11:16:28.810 回答