我在鑄造類型方面有點欠缺。我在xmlChar*
(它是無符號字符*)中有一個字符串,我想將這個無符號字符轉換爲std::string
類型。將無符號字符*轉換爲字符串
xmlChar* name = "Some data";
我盡我所能輸入了劇集,但我無法轉換它。
我在鑄造類型方面有點欠缺。我在xmlChar*
(它是無符號字符*)中有一個字符串,我想將這個無符號字符轉換爲std::string
類型。將無符號字符*轉換爲字符串
xmlChar* name = "Some data";
我盡我所能輸入了劇集,但我無法轉換它。
std::string sName(reinterpret_cast<char*>(name));
reinterpret_cast<char*>(name)
從unsigned char*
強制轉換爲char*
以不安全的方式,但是這應該在此處使用的一個。然後你調用std::string
的普通構造函數。
你也可以做到這一點C風格的(不推薦):
std::string sName((char*) name);
我發現在某些情況下,reinterpret強制在最後產生一些垃圾字符。由於它們很容易截斷,所以沒有深入調查,但我想我會提到它,以防萬一我不孤單。 – MatrixManAtYrService
並不孤單,我也發生過 – audiFanatic
你可能看到垃圾是因爲你的unsigned char數組沒有以一個空終止符結束(或者沒有以你認爲的那個結束)。通常,從一個類型轉換爲一個字符串類型而不考慮NUL是很危險的,如果你的代碼與OP的例子有任何不同,你應該仔細考慮這個(字符串**文字**已經有空終止符) –
'字符串或'的std :: string'?什麼是'String',如果你不是指'std :: string'? –
對不起@Mats皮特森,BTW它的std :: string – Cyril
使用的reinterpret_cast 看到這個[http://stackoverflow.com/questions/658913/c-style-cast-from-unsigned-char-to-const-炭] [1] [1]:http://stackoverflow.com/questions/658913/c-style-cast-from-unsigned-char-to-const-char – Ani