在boost.regex中有方便的方式在ascii和utf之间切换吗?
我现在看到的唯一方法是,例如,在boost::u32regex之间切换到boost::regex。
这是unicode和ascii之间切换的唯一方式吗?
我希望能够传递一个参数来增强,指定我的字符编码,这样就不必重复很多代码了。
发布于 2016-05-10 13:05:32
这是unicode和ascii之间切换的唯一方式吗?
差不多吧。您认为的boost::regex实际上是一个类型别名:
namespace boost{
template <class charT, class traits = regex_traits<charT> >
class basic_regex;
typedef basic_regex<char> regex;
typedef basic_regex<wchar_t> wregex;
}注意,字符类型是一个模板参数-它不是运行时参数。因为boost::regex是建立在char上的,所以它不能支持unicode。
boost::u32regex也是这样:
typedef basic_regex<UChar32,icu_regex_traits> u32regex;为了在它们之间进行真正的概括,您也必须将所有的东西都写成模板。与其使用boost::regex,不如使用boost::basic_regex<charT, traits>。这是模板的缺点之一--它们只是渗透了所有的东西。
https://stackoverflow.com/questions/37076856
复制相似问题