Я хочу напечатать значение в boost::u32regex & reg
с помощью std::cout
,
За boost::regex & reg
Я могу распечатать reg.str()
но не в состоянии использовать str()
в boost::u32regex
,
Может кто-нибудь сказать мне, пожалуйста?
Похоже, что тип используется позади 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;
Других решений пока нет …