RawByteStringの動作のテスト

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");
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください