C++標準庫中的大多數文本都提到wstring等價於字符串,除了在wchar_t而不是char上進行參數化,然後繼續僅演示字符串。C++ wstring如何從以NULL結尾的wchar_t數組中分配
嗯,有時候,有一些特定的怪癖,這裏是一個:我似乎無法從NULL終止的16位字符數組中分配一個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();
在這一點上或者是未預期的6(號碼「RKData」字符的),但更大。在我的測試中,它是29.爲什麼是29?不知道。內存轉儲不顯示第29個字符的任何特定值。
所以問題:這是我的標準C++庫(Mac OS X Snow Leopard)中的錯誤,還是我的代碼中的錯誤? 我該如何將一個16位字符的空終止數組賦給一個wstring?
由於
排序問題? – obelix 2009-08-27 11:54:36
只需在黑暗中拍攝一張雙空終止符 – Skurmedel 2009-08-27 11:56:55
@obelix,空字符的大小寫都相同。 – 2009-08-27 11:57:09