Как узнать, является ли символ в строке целым числом - PullRequest
5 голосов
/ 26 февраля 2010

Допустим, я хочу посмотреть на символ в позиции 10 в строке s.

s.at (10);

Какой самый простой способ узнать, является ли это число?

Ответы [ 5 ]

13 голосов
/ 26 февраля 2010

Использование isdigit

std::string s("mystring is the best");
if ( isdigit(s.at(10)) ){
    //the char at position 10 is a digit
}

Вам понадобится

#include <ctype.h>

для обеспечения доступности isdigit независимо от реализации стандартной библиотеки.

8 голосов
/ 26 февраля 2010

В других ответах предполагается, что вас интересуют только следующие символы: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Если вы пишете программное обеспечение, которое может работать в локалях, использующих другие системы счисления, вам следует использовать более новый std::isdigit, расположенный в <locale>: http://www.cplusplus.com/reference/std/locale/isdigit/

Тогда вы можете распознать следующие цифры как цифры: ४, ੬, ൦, ௫, ๓, ໒

5 голосов
/ 26 февраля 2010

Вам скажут следующее:

isdigit( s.at( 10 ) )

примет значение «истина», если символ в позиции 10 является цифрой.

Вам нужно будет включить .

1 голос
/ 26 февраля 2010

Использование isdigit :

if (isdigit(s.at(10)) {
    ...
}
0 голосов
/ 26 февраля 2010

Другой способ - проверить значение ASCII этого символа

if ( s.at(10) >= '0' && s.at(10) <= '9' )
  // it's a digit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...