C++Builder2009の新機能 その1

Delphi系の方々は解説を始めているけど、C++Builder系で解説している人が今のところいないので、解説になっているかどうか判らないけど、一発目。

まずは、目玉であるUnicode文字列の説明から。 「吉野家」の「吉」は所謂「土吉」(コード:U+20BB7)でサロゲートペア文字なのでこいつを試してみる。 エディタで直接入力してもいいけど、フォントの関係で表示できない可能性があるので直接コードポイントを入力。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  UnicodeString us = u"このあいだ、近所の\U00020BB7野家行ったんです。\U00020BB7野家。";
  // UnicodeString us(u"このあいだ、近所の\U00020BB7野家行ったんです。\U00020BB7野家。"); // 当然、こっちでもおk

  ShowMessage(us);
}

"UnicodeString"は、これまでのAnsiStringに代わるVCLの新しい文字列クラス。使い勝手はAnsiStringとほとんど変わりないはず。 接頭子が小文字の"u"で始まる文字列定数は、その文字列がUTF-16であることを示し、\Uは32ビットのUnicodeコードポイント文字。これらはC++0xの新機能のうち、CB2009で先行的に実装された機能。

このコードをWindows Vistaで実行してみると、こんな感じで出て来るはず。


サロゲートペア文字は、エディタで直接入力してもいいんだけど、フォントとかの関係でTiburónも、gVimも、Visual Studio 2008もカラムがずれたり、文字が化けたりしてうまくいかないんだよね・・・。(´・ω・`)ショボーン
漢字を知らない「外人さん」に「吉野家」の「吉」をどう説明したらいいんだか・・・。

追記1:
C++0x関連で、C++WGアドホック会議が12月5日(金)に東京で開催されるそうです。
次のデベロッパー・キャンプでAlisdair Meredithさんが日本に来るかもしれないという毒電波(ソースは脳内)を受信したので、時期的にこの頃かな・・・。

追記2:
Tiburónでサロゲートペア文字を表示したらカラムがずれたのは、昔、自分でメイリオとConsolasを合成した奴だったからだ。Tiburónは全くのシロです。 Kenさまありがとうございます。<(_ _)>
ちなみに、meiryoKeConsoleでは綺麗に表示されます。