RawByteStringの動作のテスト
RawByteStringのコンストラクタのテスト
char*を受け取るコンストラクタ
RawByteString raw("テスト");
ShowCode(raw);
実行結果
CodePage = 65535
83 65 83 58 83 67
バイト列をそのまま変換しないで保持している。
wchar_t*を受け取るコンストラクタ
RawByteString raw(L"テスト");
ShowCode(raw);
実行結果
CodePage = 932
値が空になっている。
RawByteString(wchar_t*)は引数が無効になるので注意が必要だ。
代入のテスト
const wchar_t* c = L"テスト";
AnsiStringT<20932> euc(c);
RawByteString raw = euc;
ShowCode(raw);
実行結果
CodePage = 20932
a5 c6 a5 b9 a5 c8
コードページも文字のバイト列も変換しないで、そのまま保持している。
UnicodeString uni = "テスト";
RawByteString raw = uni;
ShowCode(raw);
実行結果
CodePage = 932
UnicodeStringをRawByteStringに代入すると空になる。
wchar_t*を引数にとるコンストラクタと同じ挙動だ。
今回の検証に使用した関数
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");
}