#include <fcntl.h>
#include <io.h>
int main()
{
_setmode(_fileno(stdout), _O_U16TEXT);
_setmode(_fileno(stdin), _O_WTEXT);
// your code here
}
你会发现这无处不在,但这不一定是一个很好的方式来解决这个问题。 更符合标准的方法如下:
#include <locale>
int main()
{
std::locale l(""); // or std::locale l("en_US.utf-8");
std::locale::global(l); // or std::wcout.imbue(l); std::wcin.imbue(l);
// your code here
}
3条答案
按热度按时间lb3vh1jj1#
首先要做的是使程序不依赖于源文件的编码,所以使用Unicode转义而不是Unicode字符
在源文件中有不正确的编码只是阻止你打印希腊语的众多因素中的一个。另一个明显的问题是你的终端打印希腊字母的能力。如果它不能做到这一点,或者需要正确设置才能做到这一点,那么你在程序中所做的任何事情都将无法工作。
也许你想修复源代码编码的问题,这样你就可以在代码中使用未转义的文本,但是这取决于你使用的编译器/IDE。
qlfbtfca2#
如果你输出你的cout到一个普通的控制台,那么控制台通常不支持unicode文本,比如希腊语,试着设置它为unicode文本,或者找到另一种方式来输出你的数据,比如txt文件或者一些gui。
nfzehxib3#
有两种方法可以做到这一点。
旧的、非标准的Microsoft方式如下:
你会发现这无处不在,但这不一定是一个很好的方式来解决这个问题。
更符合标准的方法如下:
这应该也适用于其他现代编译器和操作系统。