这是我得到错误。 为了解释,我想根据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;
}
答案 0 :(得分:0)
使用_tmain
和SetConsoleOutputCP
我猜你主要是关于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)。如果注释正确,您仍可以将其调整为具有适当的值。