1

这是我得到错误。为了解释,我想根据http://www.endmemo.com/unicode/unicodeconverter.php打印 → 字符

代码是 2192。但如果是这样,我可能使用了错误的代码,正确的打印方式是什么 → 。

int _tmain(int argc, _TCHAR* argv[])
{
    UINT oldcp = GetConsoleOutputCP();
    SetConsoleOutputCP(CP_UTF8);

    cout<<"\x2192"<<endl;

    SetConsoleOutputCP(oldcp);

    return 0;
}
4

2 回答 2

1

您平台上的 char 是 8 位。您的代码部分"\x2192"尝试在其中放入 16 位。什么不适合,所以你得到警告。

您可能指的是几个字符,例如"\x21\x92"or "\x92\x21"?这将创建一个带有两个字符(+ 0)的有效字符串。如果注释正确,您仍然可以将其调整为正确的值。

于 2013-06-18T22:18:12.230 回答
0

从使用_tmainSetConsoleOutputCP我猜你主要是关于Windows的。恐怕我对此知之甚少;希望对这个特定案例有更多了解的人会加入进来,但是这个程序会在我在这里使用 UTF-8 终端进行的快速测试中生成您正在寻找的输出。这是程序:

#include <iostream>

int main(void)
{
    std::cout << "\xE2\x86\x92" << std::endl;
    return 0;
}

示例输出:

$ make example && ./example
c++     example.cpp   -o example
→

我只是直接输出→字符的UTF-8编码。

等效地(至少对于clang):

#include <iostream>

int main(void)
{
    std::cout << "→" << std::endl;
    return 0;
}
于 2013-06-18T22:05:20.597 回答