之前(使用ASCII)我使用的std :: string如緩衝這樣的:C++附加的int wstring的
std::string test = "";
int value = 6;
test.append("some string");
test.append((char*)value, 4);
test.append("some string");
在測試預期值:
「一些srtring \ 5233 \ X0 \ X0 \ x0somestring」
現在我特林使用Unicode,我想保持相同的 「碼」,但trubles發生:
std::wstring test = "";
int value = 6;
test.append("some string");
test.append((wchar_t*)value, 4); (buffer overflow cause reading 8 bytes)
test.append("some string");
我該如何在std :: string中添加字節? 做:
std::wstring test = "";
int value = 6;
test.append("some string");
test.append((wchar_t*)value, 2);
test.append("some string");
解決部分問題原因後,我不能追加的bool。
編輯: 如果採用二進制副本我甚至可以使用wstringstream(通常不是)
只要翻轉到'std :: wstring',就不會「使用Unicode」。 –
爲什麼不使用'std :: to_string'和'std :: to_wstring'? (並使用'+'作爲concat) – pergy
強制轉換通常是一個糟糕的主意。 C型演員通常是一個更糟糕的主意。如果你使用了C++類型轉換,你會發現'static_cast(value)'不會被編譯。通常,'static_cast'至少是安全的。通過不編譯,至少你可能會被阻止嘗試像這樣。 '(char *)value'獲取字節並將它們重新解釋爲字符。你確定這就是你真正想要的嗎?當然不是,但演員並沒有告訴你,像'reinterpret_cast'一樣。 –
chris