C ++標準ライブラリのほとんどのテキストでは、charではなくwchar_tでパラメータ化されていることを除いて、wstringはstringと同等であると記載されており、文字列のみのデモンストレーションに進みます。
まあ、時々、いくつかの特定の癖があります、そしてここに1つあります:私は16ビット文字のNULLで終了する配列からwstringを割り当てることができないようです。問題は、割り当てがヌル文字とそれに続くゴミを実際の文字としてうまく使用することです。これは非常に小さな削減です:
typedef unsigned short PA_Unichar;
PA_Unichar arr[256];
fill(arr); // sets to 52 00 4b 00 44 00 61 00 74 00 61 00 00 00 7a 00 7a 00 7a 00
// now arr contains "RKData\0zzz" in its 10 first values
wstring ws;
ws.assign((const wchar_t *)arr);
int l = ws.length();
この時点で、lは予想される6( "RKData"の文字数)ではありませんが、はるかに大きくなっています。私のテストランでは29です。なぜ29なのですか?わからない。メモリダンプには、29番目の文字の特定の値は表示されません。
だから質問:これは私の標準C ++ライブラリ(Mac OS X Snow Leopard)のバグですか、それとも私のコードのバグですか?16ビット文字のnullで終了する配列をwstringに割り当てるにはどうすればよいですか?
ありがとう