C ++错误对于角色来说太大了

时间:2013-06-18 21:57:12

标签: c++ character utf

这是我得到错误。 为了解释,我想根据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;
}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

您可能需要多个字符,例如"\x21\x92""\x92\x21"?这会创建一个包含两个字符的有效字符串(+ 0)。如果注释正确,您仍可以将其调整为具有适当的值。