在 OSX 上以C++的方式写入要控制台的特殊字符

Writting special characters to console in C++ on OSX

本文关键字:控制台 特殊字符 方式写 上以 C++ OSX      更新时间:2023-10-16

我用C++编写了一个程序来查询与音乐相关的元数据。但是,在将结果写入控制台时,我意识到某些艺术家的名称中有特殊字符,具体为 UTF-8。到目前为止,我已经学会了通过字符代码显示特殊字符,如下所示:

cout << "u0394" << "n";

上面的代码应该根据 http://www.utf8-chartable.de/显示"Δ",但它显示"Œî",我相信这与控制台的编码有关。

我对这个问题做了一些研究,并遇到了一个示例程序,该程序应该通过以下我似乎无法解决的错误来解决我的问题。

#include <io.h>
#include <fcntl.h>
#include <iostream>
int main()
{
    _setmode (_fileno(stdout), _O_U8TEXT);
    wcout << L"AaĄąfl" << endl;
    return 0;
}
../main.cpp:1:16: warning: io.h: No such file or directory
../main.cpp: In function 'int main()':
../main.cpp:7: error: '_fileno' was not declared in this scope
../main.cpp:7: error: '_O_U8TEXT' was not declared in this scope
../main.cpp:7: error: '_setmode' was not declared in this scope
../main.cpp:8: error: 'wcout' was not declared in this scope
../main.cpp:8: error: 'endl' was not declared in this scope
make: *** [main.o] Error 1

我知道那里有很多关于这方面的信息,但在我看来,我已经做了足够的研究,值得在这里发布。我认为我无法解决此问题的原因之一是因为我阅读的有关此主题的信息都不适用于MacOSX。我也在使用Eclipse Kepler。

有关如何使我的示例程序正常工作或正确显示在控制台的任何信息将不胜感激。

谢谢

感谢@sbugert...

如何在 Eclipse Kepler 中更改控制台的编码:
运行>运行配置
导航到当前项目
进入"通用"选项卡
请参阅"编码"部分