Извлечение произвольных значений данных из переполнения стека std :: string

У меня есть такие строки

10z45
9999i4a

В принципе int-char-int-optionalchar

Я хочу сделать эту функцию прототипа

void process(std::string input, int &first, char &c, int &last, bool &optional)

Единственное, я не уверен, что лучший способ перебрать строку для извлечения этих значений. Не предпочел бы использовать библиотеку регулярных выражений, кажется, может быть сделано просто?

1

Решение

Используйте поток строк:

#include <sstream>
...
std::istringstream iss(input);
iss >> first >> c >> last >> optional;

Если нет финального символа, значение optional не будет затронут, поэтому я бы рекомендовал установить его в 0 заранее.

3

Другие решения

использование std::istringstream, прочитайте int, char, int, затем попробуйте следующий char:

std::istringstream is(input);
is >> first >> c >> last;
char c2;
optional = (is >> c2);

Я не уверен, что это на 100% то, что вы хотите, но я бы сделал это таким образом.

1

По вопросам рекламы [email protected]