Извлечение чисел из строки в C ++ - PullRequest
0 голосов
/ 16 мая 2018

Предположим, у меня есть следующий массив символов:

char *word="R12_X8_10";

Количество цифр не фиксировано, но расположение по отношению к нечисловым символам фиксировано.Как я могу извлечь цифры без повышения?Я должен получить {"12", "8", "10"}, разделив слово.

Это должно быть простой задачей, как я делал в Java много раз, но в C ++ это обременительномой мозг.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Потоковым способом C ++ было бы получить или просто игнорировать маркировку символов. Например, чтобы игнорировать их, вы можете использовать:

const char *word = "R12_X8_10";
int i, j, k;
std::stringstream ss(word);

ss.ignore(1) >> i;
ss.ignore(2) >> j;
ss.ignore(1) >> k;

или даже (более компактный, если не более читаемый):

((ss.ignore(1) >> i).ignore(2) >> j).ignore(1) >> k;

(не имеет отношения, но обратите внимание на const для word, потому что литералу строки не следует назначать неконстантный указатель).

0 голосов
/ 16 мая 2018

Вы можете попробовать это.

int a,b,c;
char *word="R12_X8_10";
    sscanf(word,"R%d_X%d_%d",&a,&b,&c);

Я знаю, что это система c ++, но я также знаю, что scanf и sscanf работают с компилятором c ++, если включен stdio.h.

Надеюсь, это поможет.

...