2014-11-16 2 views
0

Я пытаюсь написать функцию, которая проверяет, содержит ли строка число, положительное или отрицательное.Проверить строку для чисел

getline(cin,line); 

    istringstream sin(line); 

    while (sin >> ws >> in){ 

     if(all_of(in.begin(), in.end(), ::isdigit){ 
     //do something with number 
     } 

Проблема в том, что isdigit() установит все отрицательные числа как не цифры. Какие еще способы проверить, содержит ли строка числа?

вход Пример: 1 2 -2 ASDF 4.

+0

Почему вы не работаете непосредственно с 'line', а не обертываете поток строк вокруг него? –

+0

Слышали ли вы о 'std :: stoi', случайно? – Rook

ответ

0

Проверьте, если ведущий персонаж - (или +, или то, что вы будете принимать), и если да, то удалите его, а затем использовать свой текущий тест для чего остается.

Более полное решение - использовать регулярное выражение.

Смежные вопросы