Как напечатать значение в boost :: u32regex & amp; Редж

Я хочу напечатать значение в boost::u32regex & reg с помощью std::cout,

За boost::regex & regЯ могу распечатать reg.str() но не в состоянии использовать str() в boost::u32regex,

Может кто-нибудь сказать мне, пожалуйста?

0

Решение

Похоже, что тип используется позади boost::u32regex не совместим с cout, Кажется, они используют Uchar32 от ICU библиотека.

Вы можете распечатать свое значение регулярного выражения, используя итераторы:

#include <boost/regex.hpp>
#include <boost/regex/icu.hpp>
#include <unicode/ustream.h>

void PrintRegex32( const boost::u32regex& r )
{
boost::u32regex::iterator it  = r.begin();
boost::u32regex::iterator ite = r.end();

for ( ; it != ite; ++it )
{
std::cout << UnicodeString(*it) << std::endl;
}
}

Это работает для меня. Это не так просто, как распечатать boost::regex ценность, но это работает. Я предлагаю вам создать для этого функцию, как в примере.

РЕДАКТИРОВАТЬ :

Вы можете попробовать код:

boost::u32regex r = boost::make_u32regex("(?:\\A|.*\\\)([^\\\]+)");
PrintRegex32( r );

Я могу распечатать reg.str()

Просто для информации, boost::basic_regex имеет operator<< перегрузите, кто делает то же самое, так:

// reg is a boost::regex
std::cout << reg.str() << std::endl;

это то же самое, что

// reg is a boost::regex
std::cout << reg << std::endl;
2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector