C ++ для преобразования результата соответствия Boost Regex в другой формат

Возможный дубликат:
Как преобразовать число в строку и наоборот в C ++

Как мне преобразовать результат совпадения boost :: regex в другой формат, например, целое число с кодом ниже?

string s = "abc123";
boost::regex expr("(\\s+)(\\d+)");
boost::smatch match;
if(boost::regex_search(s, match, expr)) {
string text(match[0]);
// code to convert match[1] to integer
}

2

Решение

Я уверен, что вы хотели бы иметь

string text(match[1]);
// convert match[2] to integer

вместо этого, как match[0] является полностью совпадающей вещью (здесь abc123), поэтому индексация субматчей начинается с 1.

Что касается преобразования в целочисленную часть, lexical_cast удобно использовать:

string s = "abc123";
boost::regex expr("(\\s+)(\\d+)");
boost::smatch match;
if(boost::regex_search(s, match, expr)) {
string text(match[1]);
int num = boost::lexical_cast<int>(match[2]);
}
2

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

Других решений пока нет …

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