我想使用boost::u32regex & reg
在std::cout
打印一个值。
对于boost::regex & reg
,我可以打印reg.str()
但无法将str()
用于boost::u32regex
。
有人可以告诉我吗?
答案 0 :(得分:2)
似乎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;