оператор ввода вывода >> (я надеюсь, что это приемлемое имя) применяется и возвращает поток &, который имеет оператор bool, что означает, что извлечение было успешно предпринято. Например, из Cubbi ответа:
...
std::istringstream s("+31321");
long n;
if (s >> n)
std::cout << n << '\n';
....
Это succed, конечно, учитывая соответствующее содержание с.
Несколько другое (проще, но не безопасное для типа) также семейство scanf имеет практические инструменты, доступные на C++, а также c. Конечно, вы можете написать на примере так:
...
long n;
if (sscanf("+31321", "%d", &n) == 1)
std::cout << n << '\n';
...
подмножество регулярных выражений сделать это достаточно мощным: например, чтобы соответствовать запятой separed мульти поля с левым пространством обрезки:
if (sscanf("a,b,c", " [^,], [^,], [^,]", a,b,c) == 3) ...
См http://www.cplusplus.com/reference/clibrary/cstdlib/strtoul/ – tenfour
Проблема с strtoul() - нет признаков сбоя (он просто возвращает 0). –