AnsiStringTからコードページの異なるAnsiStringTへの代入のテスト
AnsiStringT<932> sjis = L"テスト";
AnsiStringT<20932> euc = sjis;
ShowCode(euc);
実行結果
CodePage = 20932
a5 c6 a5 b9 a5 c8
コードページにしたがって変換されている。
UnicodeStringを間に挟んだ場合のテスト
AnsiStringT<932> sjis = L"テスト";
UnicodeString uni = sjis;
AnsiStringT<20932> euc = uni;
ShowCode(euc);
実行結果
CodePage = 20932
a5 c6 a5 b9 a5 c8
Shift_JISからEUC-JPに変換されている。
結論としては、
AnsiStringTからAnsiStringTへの代入、
AnsiStringTからUnicodeStringへの代入、
UnicodeStringからAnsiStringTへの代入、
は、いずれも自動的に変換されるようだ。
今回の検証に使用した関数
void ShowCode(const RawByteString& Str)
{
printf("CodePage = %d\n", StringCodePage(Str));
for (int i = 1; i <= Str.Length(); i++)
{
printf("%x ", static_cast<unsigned char>(Str[i]));
}
printf("\n");
}