次のように記述すると
cout << "\u2780";
ザ・コンパイラは\ u2780を実行文字セット内のその文字の適切なエンコーディングに変換します。これはおそらくUTF-8なので、文字列は4バイト(文字の場合は3つ、ヌルターミネーターの場合は1つ)を持つことになります。
実行時に文字を生成する場合は、実行時にコンパイラがコンパイル時に行うUTF-8と同じ変換を行う必要があります。
C++ 11には、しかしにlibstdC++、GCCに付属している標準ライブラリの実装は、まだ(GCC 4.8のように)それらを実装するに周り得ていないが、これを行うことができ便利wstring_convert
テンプレートとcodecvtファセットを提供します。以下は、これらの機能の使用方法を示していますが、別の標準ライブラリ実装を使用するか、libstdC++がそれらを実装するのを待つ必要があります。
#include <codecvt>
int main() {
char32_t base = U'\u2780';
std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> convert;
std::cout << convert.to_bytes(base + 5) << '\n';
}
利用可能なUTF-8を作成する他の方法を使用することもできます。たとえば、iconv、ICU、およびpre-C++ 11 codecvt_bynameファセットの手動使用はすべて動作します。 (そのコードがwstring_convert
で許可され、簡単なコードよりも複雑になるので、私はこれらの例を示していない。)
文字の数が少ないために働くだろう代替の配列を作成することですリテラルを使用している文字列。
char const *special_character[] = { "\u2780", "\u2781", "\u2782",
"\u2783", "\u2784", "\u2785", "\u2786", "\u2787", "\u2788", "\u2789" };
std::cout << special_character[i] << '\n';
は、オペレータ 'L'でwchar_tを使用していますか?可能であれば完全なコードを投稿するか、[sscce.org](SSCCE) – pinkpanther
Unicodeエンコーディングを混乱させたくない場合は、文字列を追加するのではなく、 'x'の値にマップすることができます。 – dyp
[C++でUnicode文字を印刷するにはどうすればいいですか?](http://stackoverflow.com/questions/12015571/how-to-print-unicode-character-in-c) –