c ++即使我可以直接编写unicode字符也无法输出

时间:2016-04-21 08:26:08

标签: c++ linux unicode

所以我可以将像棋子这样的unicode字符直接复制到终端(我使用debian jessie linux),但每当我编写c ++代码时,我都会这样做�而不是 这是我的代码

enter code here
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
    setlocale(LC_ALL,"");
    wchar_t piece='♗';
    wcout<<piece;
}

我尝试使用字符的十六进制或十进制代码,但它不起作用 我也使用vim进行编辑,它确实会在我输入时显示字符。

2 个答案:

答案 0 :(得分:1)

没有规定wchar_t应该使用什么编码。我需要使用mbstowcs函数来转换该字符。像这样,例如:

#include <iostream>
#include <clocale>
#include <cstdlib>

using namespace std;
int main(void) {
  setlocale(LC_ALL, "");

  wchar_t piece;
  mbstowcs(&piece, "♗", 1);

  wcout << piece << endl;
  return 0;
}

假设您的源文件编码与您的语言环境的编码匹配。

答案 1 :(得分:0)

奇怪的是,正常情况下,将特殊字符放入字符串中它非常简单,我甚至没想过要使用它。

#include<iostream>
using namespace std;
int main()
{
    string piece="♗";
    cout<<piece;
}