嗨,有人可以帮我吗。我需要检查我的输入仅包含整数。我从查找中猜测我使用了isDigit函数,但是我不确定如何使用它来检查整个数字。

我正在使用C ++与MSI进行交互,因此我得到的整数如下:

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


我想我必须将szLockType更改为char,然后使用isdigit来扫描每个字符,但是我不确定如何实现此功能。任何帮助将不胜感激。即时贴是新手,如果这是一个非常琐碎的问题,请原谅。.:)

最佳答案

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
    }
}

09-06 04:06