C++ 没有按预期打印表情符号
C++ not printing emojis as expected
我有以下程序摘录
int main(){
cout << "1) ✊\n";
cout << "2) ✋\n";
cout << "3) ✌️\n";
}
但当时我运行收到如下奇怪的短信
====================
rock paper scissors!
====================
1) 
2) 
3) ԣÅ
这似乎与我的终端无关,而是与编译结果有关,因为如果我 运行 echo ✊
它会按预期显示。
见下面的例子
我目前正在使用以下编译命令和编译器版本
g++ *.cpp -o rock_paper_scissors.exe
g++.exe (Rev9, Built by MSYS2 project) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
最后,请注意,它之前按预期工作,但在某些时候,它停止工作,我在使用 system("pause")
后注意到,我猜这可能改变了编译配置的某些内容,如下所示是一个仅 Windows 的命令,我删除了这段代码但仍然有问题。
您可以在此处查看其余代码:https://github.com/guillene/RockPaperScissors
如果你的终端字体支持表情符号,并且你不想写太多代码(比如从 cout 切换到 wcout),你可以使用下面的 windows api 函数。
#include <windows.h>
#include <iostream>
int main(){
SetConsoleOutputCP(CP_UTF8);
std::cout << "1) ✊\n";
std::cout << "2) ✋\n";
std::cout << "3) ✌️\n";
return 0;
}
参见:https://docs.microsoft.com/en-us/windows/console/setconsoleoutputcp
我有以下程序摘录
int main(){
cout << "1) ✊\n";
cout << "2) ✋\n";
cout << "3) ✌️\n";
}
但当时我运行收到如下奇怪的短信
====================
rock paper scissors!
====================
1) 
2) 
3) ԣÅ
这似乎与我的终端无关,而是与编译结果有关,因为如果我 运行 echo ✊
它会按预期显示。
见下面的例子
我目前正在使用以下编译命令和编译器版本
g++ *.cpp -o rock_paper_scissors.exe
g++.exe (Rev9, Built by MSYS2 project) 11.2.0 Copyright (C) 2021 Free Software Foundation, Inc.
最后,请注意,它之前按预期工作,但在某些时候,它停止工作,我在使用 system("pause")
后注意到,我猜这可能改变了编译配置的某些内容,如下所示是一个仅 Windows 的命令,我删除了这段代码但仍然有问题。
您可以在此处查看其余代码:https://github.com/guillene/RockPaperScissors
如果你的终端字体支持表情符号,并且你不想写太多代码(比如从 cout 切换到 wcout),你可以使用下面的 windows api 函数。
#include <windows.h>
#include <iostream>
int main(){
SetConsoleOutputCP(CP_UTF8);
std::cout << "1) ✊\n";
std::cout << "2) ✋\n";
std::cout << "3) ✌️\n";
return 0;
}
参见:https://docs.microsoft.com/en-us/windows/console/setconsoleoutputcp