Я пытаюсь написать функцию, которая проверяет, содержит ли строка число, положительное или отрицательное.
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.
Проверьте, есть ли главный символ -
(или +
или что-то еще, что вы согласитесь), и если да, удалите его, а затем используйте текущий тест для того, что осталось.
Более полное решение - использовать регулярное выражение.
line
, а не упаковку струнного потока вокруг него?std::stoi
?