テキストデータの実体はそのままで型だけ変えたいとかなんとか
お前今更何言ってんだ的な内容です…
何がやりたいかというと
メモリ上に,例えば以下のようなchar型配列に格納されたデータがあるときを考えます。このデータは実際にはchar配列に格納されたUTF-16の文字列「hoge」です。
char: |__|__|__|__|__|__|__|__|
68 00 6F 00 67 00 65 00
これをデータそのものは変更ぜずにUTF-16の文字列として扱えるようにしたい.こんなイメージ.
char : |__|__|__|__|__|__|__|__|
68 00 6F 00 67 00 65 00
wchar_t: |_____|_____|_____|_____|
そこで
char配列と同じバイト数のwchar_t配列を作ってmemcpyでメモリ単位でコピーする方向でやってみました. コードは以下.
// 事前にchar[]のバイト数 source_byte_size を求めておき // wchar_t[]に必要な要素数を割り出す。 int wchar_t_element_count = source_byte_size / sizeof(wchar_t); // wchar_t[]の要素を確保する。確保されるメモリは source_byte_size と等しくなるはず。 wcahr_t* dest_buffer = new wchar_t[wchar_t_element_count]; SecureZeroMemory(dest_buffer, source_byte_size); // source_byte_size ぶんコピーする memcpy_s( dest_buffer, source_byte_size, source, source_byte_size );
おわりに
これってどういうやり方が賢いんですかね?