3

Dev C++、Windows 7 を使用しています。

次を使用して非ASCII文字を印刷しようとしています:

char a='\uwxyz';

例えば:

#include <locale.h>
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <conio.h>
#include <stdio.h>

using namespace std;

int main()
{
    setlocale(LC_ALL,"en_US.UTF-8");
    char a='\u0041'; //Should display 'A'
    cout<<a<<endl;
    a='\u2639'; //Should display '☹'
    cout<<a<<endl;
    system("PAUSE");
}

この例では、大文字の A が正しく表示されています。wxDev を使用すると、☹ 文字に対して何も表示されません。Dev (最終プログラムに使用する必要があります) を使用すると、拡張された ascii 文字が得られます (これは ∥ に似た記号でしたが、そのように見える記号が複数あり、どれかわかりませんでした)。

Dev と wxDev の両方で、☹ は ? として表示されます。

Unicode 文字を正しく表示する方法を最初に検索した後、setlocale を追加しましたが、この問題の解決策はまだ見つかりません。

別のコンパイラを使用したり、システム設定を変更してこれを機能させることはできません。(はい、これは学校のプロジェクトです。いいえ、プロジェクトに特殊文字は必要ありません。見栄えを良くしたいだけです。)このような設定を変更しないと機能しない場合は、それも役立つ情報です。

よろしくお願いします。

編集:wxDevではなく、Devを使用して、

char a='\u0041'; //should be A
cout<<a;

エラーが表示されます: \u0041 は有効なユニバーサル文字ではありません

データ型として wchar_t を使用する場合:

wchar_t a = '\u2639';
cout<<a<<endl;

出力は 39097 です。

4

1 に答える 1