如何使用wstring和wcout在Xcode中输出中文单词?

时间:2012-03-17 22:05:36

标签: c++ xcode macos

我尝试在Xcode 4.2中运行代码:

int main(int argc, const char * argv[])
{
    locale loc("chs");
    locale::global(loc);

    wstring text(L"你好");
    wcout << text << endl;
    return 0;
}

我收到错误“Thread 1:signal SIGABRT”。

您能告诉我错误发生的原因或如何使用wstringwcout输出中文字词吗?

2 个答案:

答案 0 :(得分:6)

你没有。与其他Unix系统一样,Mac使用UTF8,而Windows使用“Unicode”(UTF-16)。

您可以使用stringcout代替wstringwcout在Mac上完美打印。

附录

此示例效果很好。用g ++编译并按原样运行。

#include <string>
#include <iostream>

using namespace std;

int main(int arg, char **argv)
{
    string text("汉语");
    cout << text << endl;

    return 0;
}

答案 1 :(得分:1)

崩溃来自locale()。这SO answer似乎很相关。

Mahmoud Al-Qudsi所述,您不需要它,因为您可以在普通string对象中使用UTF-8:

#include <string>
#include <iostream>

using namespace std;

int main(int argc, const char * argv[])
{

    string text("你好");
    cout<<text<<endl;
    return 0;
}

产地:

$ ./test
你好

编辑:糟糕,为时已晚:)