c++ - 带有 boost::locale::normalize 的 bad_cast 错误
问题描述
我正在尝试将包含以utf编码的txt文件内容的字符串转换为unicode字符串,使用boost并在此之后对其进行规范化。不幸的是,我得到了 bad_cast 错误。任何人都可以帮忙吗?代码:
convert_to_wstring(void *buffer, int length) {
boost::locale::generator g;
g.locale_cache_enabled(true);
std::locale loc = g(boost::locale::util::get_system_locale());
std::string buffer_char = static_cast<char *>(buffer);
std::wstring result = boost::locale::conv::to_utf<wchar_t>(buffer_char, loc);
result = boost::locale::normalize(result);
result = boost::locale::fold_case(result);
return result;
}
解决方案
我正在研究它。问题是在某些语言环境中规范化字符串之前应该生成它,所以固定代码如下所示:
convert_to_wstring(void *buffer, int length) {
boost::locale::generator gen;
gen.locale_cache_enabled(true);
std::locale loc = gen(boost::locale::util::get_system_locale());
std::string buffer_char = static_cast<char *>(buffer);
std::wstring result = boost::locale::conv::to_utf<wchar_t>(buffer_char, loc);
std::locale locale = gen("UTF-8");
std::locale::global(locale);
result = boost::locale::normalize(result);
result = boost::locale::fold_case(result);
return result;
}
推荐阅读
- regex - 不重复符号的正则表达式匹配字符串
- scala - 第一个元素在 5000 毫秒内尚未通过
- apache - HTACCESS 将 .com.au 重定向到仅 .com
- c# - 在云运行中的 C# 线程中运行时,npgsql executereader 很慢
- html - 反应复选框和按钮控制
- javascript - 电子应用程序上的动画在失去焦点一段时间后停止
- python - 计算每个月的条目数 pandas
- woocommerce - WooCommerce:填充 [product_page id="X"] 其中 X 是 URL 参数
- powershell - 如何在 Powershell 表达式中使用一元运算符作为参数
- r - 如何根据ggplot geom_boxplot中的手动阈值去除异常值