我想在boost::u32regex & reg
using中打印一个值std::cout
。
因为boost::regex & reg
,我可以打印reg.str()
但不能使用str()
to boost::u32regex
。
谁能告诉我?
我想在boost::u32regex & reg
using中打印一个值std::cout
。
因为boost::regex & reg
,我可以打印reg.str()
但不能使用str()
to 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;