在短程范围内验证字符串

时间:2011-04-29 16:04:43

标签: c++ validation

我在字符串中有一个短整数。例如:“123456”。是否有任何API来检查字符串是否包含unsigned short范围内的有效数字?

谢谢!

3 个答案:

答案 0 :(得分:3)

只需使用流操作符输入数字:

istringstream istr("12346");
short s;
if ((istr >> s) and istr.eof())
    cout << "valid: " << s << endl;
else
    cout << "invalid" << endl;

(需要标题sstream。)

答案 1 :(得分:1)

我喜欢boost::lexical_cast

#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”参数检查它是否是有效的数字字符串。然后你可以将它转换为简短并检查是否相等。