Проверьте строку для чисел

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 ?
Теги:
string

1 ответ

0
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню