我正在尝试编写一个让 Lenny 跳跃的代码,但 lenny 面对这个:(͡° ͜ʖ ͡°)
当编译和运行代码(g++ -o Lenny main.cpp)时,我得到输出“(͡°�~\�~V͡°)”。有没有办法让它显示(͡°͜ʖ͡°)?
Linux 具有良好的 Unicode 支持,如果您所做的只是输出,则不需要任何特殊库:
#include <iostream>
int main()
{
std::cout << "( ͡° ͜ʖ ͡°)\n";
}
在线演示:http: //ideone.com/UUS6Il
或者,您不能依赖 Linux 的内置 UTF-8 并明确说明它:
#include <iostream>
#include <locale>
int main()
{
std::locale::global(std::locale("en_US.utf8"));
std::wcout.imbue(std::locale());
std::wcout << L"( ͡° ͜ʖ ͡°)\n";
}
在线演示:http: //ideone.com/EhTfB9
编辑:根据您在评论中的代码,您的问题实际上是关于 ncurses 库 I/O,而不是关于 C++。为了让您的程序按预期工作,
setlocale(LC_ALL, "en_US.utf8");
在您的开头附近添加该行main()
(并#include <clocale>
相应添加)-lncursesw
,而不是-lncurses
您正在使用的链接线。