У меня есть приложение, где я получаю vector<string>
. Мне нужно перебрать каждый элемент вектора и посмотреть, является ли значение целочисленным.
Хотя вектор представляет строки, немногие элементы могут содержать целое число. Мне нужно выяснить, какие из этих элементов являются целыми числами, и если элемент является целым числом, мне нужно его значение. Если элемент в векторе является строкой, то я просто игнорирую это.
Я пытался использовать atoi(vector[index].c_str())
, но у меня проблема с ним. atoi
возвращает целочисленное значение, если значение, содержащееся в строке, является целым числом. Если нет, то возвращается 0
Итак, рассмотрим следующее:
atoi("Shankar") = 0
atoi("0") = 0
и
atoi("123") = 123
atoi("123Shankar") = 123
Итак, как мне отличить показанные выше случаи? Если это не может быть достигнуто с помощью atoi, то каково альтернативное решение этой проблемы?
Пожалуйста, помогите.
EDIT
Я могу перебрать строку и посмотреть, является ли каждый символ целым числом, но это снижает производительность, поскольку для m строк со средним из n символов мне нужно проверить m X n раз, что делает его O (n ^ 2). ).
Есть ли лучший способ решить эту проблему?
EDIT2
К сожалению, я не могу использовать какую-либо стороннюю библиотеку для этого и просто использую STL
EDIT3
В моем приложении вектор не содержит отрицательных целых чисел, поэтому я рассматриваю решение Xeo, поскольку sstream не различает «123» и «123Shankar»
Спасибо всем за помощь.