AnsiStringTのコンストラクタにchar*とwchar_t*を引数とした場合の挙動のテスト
const char* c1 = "テスト";
AnsiStringT<20932> euc1(c1);
ShowCode(euc1);
const wchar_t* c2 = L"テスト";
AnsiStringT<20932> euc2(c2);
ShowCode(euc2);
実行結果
CodePage = 20932
83 65 83 58 83 67
CodePage = 20932
a5 c6 a5 b9 a5 c8
char*の場合は変換されず、コードページと文字が一致していない。
コードページはEUC-JPだが、Shift_JISのバイト列のままである。
wchar_t*を引数とした場合は、EUC_JPに変換されている。
代入の場合も同じ動作となる。
今回の検証に使用した関数
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");
}