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