在过去的两天里,我一直在尝试将utf-8
字符串转换为cp437
字符串,并且我已经尝试过这个答案。
示例情况将转换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 转换像这样的特殊字符?