「\uhhhh」を使用する場合の UNICODE_STRING_SIMPLE マクロの動作を理解する必要があります
次のコードがあります。
cout<<"Char print out for À"<<endl;
SCAUString us = UNICODE_STRING_SIMPLE ("À");
cout<<"us.countChar32()="<<us.countChar32()<<endl;
for (int i=0; i<us.countChar32(); i++)
cout<<(int)us.charAt(i)<<" ";
出力: us.countChar32()=2 195 8364
しかし、次の場合は別の答えになります: \u00C0 is À
cout<<"\nChar print out for \\u00C0"<<endl;
us = UNICODE_STRING_SIMPLE ("\u00C0");
cout<<"us.countChar32()="<<us.countChar32()<<endl;
for (int i=0; i<us.countChar32(); i++)
cout<<(int)us.charAt(i)<<" ";
ここでの出力は次のとおりです: us.length()=1 192
違いの理由を説明できる人はいますか?
ustream.h を使用してファイルに書き込みました。
testFile<<"5:"<< UNICODE_STRING_SIMPLE ("À"); // needs ustream.h
testFile<<endl;
testFile<<"6:"<< UNICODE_STRING_SIMPLE ("\u00C0"); // needs ustream.h
testFile<<endl;
testFile はオブストリームです。開くと、5:À と表示されますが、6 は間違っています: 6:。Visual Studio でテキスト ファイルを開くと、VS が表示した実際の文字です。