过去两天我一直在尝试将utf-8
字符串转换为cp437
字符串,我已经尝试过this answer。
示例情况是将char *utf8="\xC2\xBB"
转换为char *cp437="\xAF"
(如果愿意,则转换为小数位数为175)。
我想出了很多变化:
struct ConsoleOutputWrapper {
boost::locale::generator generator;
std::string c_output; // Charset name
std::locale l_output; // Locale
ConsoleOutputWrapper() :
generator(),
c_output("CP437")
{
generator.locale_cache_enabled(true);
l_output = generator(c_output);
}
void operator<<(const char* str)
{
std::cout << boost::locale::conv::from_utf<char>(str, l_output);
}
};
// Test
ConsoleOutputWrapper k;
k << "\xc2\xbb";
但我所获得的最佳转化为>
而不是»
。
有关如何使用boost转换特殊字符的想法吗?