1

在过去的两天里,我一直在尝试将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 转换像这样的特殊字符?

4

0 回答 0