我在字符串中有一个短整数。例如:“123456”。是否有任何API来检查字符串是否包含unsigned short范围内的有效数字?
谢谢!
答案 0 :(得分:3)
只需使用流操作符输入数字:
istringstream istr("12346");
short s;
if ((istr >> s) and istr.eof())
cout << "valid: " << s << endl;
else
cout << "invalid" << endl;
(需要标题sstream
。)
答案 1 :(得分:1)
#include <boost/lexical_cast.hpp>
#include <iostream>
#include <string>
int main() {
std::string s("12346");
try {
boost::lexical_cast<unsigned short>(s);
std::cout << "valid\n";
} catch (boost::bad_lexical_cast&) {
std::cout << "invalid\n";
}
}
答案 2 :(得分:0)
我会使用strtol转换数字并使用“endptr”参数检查它是否是有效的数字字符串。然后你可以将它转换为简短并检查是否相等。