Проверить строку в пределах короткого расстояния - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть короткое целое число в строке. Например: «123456». Есть ли API для проверки, содержит ли строка допустимое число в диапазоне беззнаковых шорт?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 29 апреля 2011

Просто используйте операторы потока для ввода числа:

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

(необходим заголовок sstream.)

1 голос
/ 29 апреля 2011

Мне нравится 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";
  }
}
0 голосов
/ 29 апреля 2011

Я бы использовал strtol как для преобразования числа, так и для проверки, была ли это допустимая числовая строка, используя параметр "endptr".Затем вы можете преобразовать его в короткую и проверить на равенство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...