C++ 将无符号字符*转换为std::字符串
我打字有点差。我在C++ 将无符号字符*转换为std::字符串,c++,casting,unsigned,tizen,C++,Casting,Unsigned,Tizen,我打字有点差。我在xmlChar*中有一个字符串(它是无符号字符*),我想将这个无符号字符转换为std::string类型 xmlChar* name = "Some data"; 我尽了最大努力进行打字,但找不到转换的方法。String或std::String?什么是String,如果你不是指std::String`?对不起@Mats peterson,顺便说一下它的std::stringUse reinterpret_cast看到这个[[1]:可能的重复我可以理解为什么
xmlChar*
中有一个字符串(它是无符号字符*),我想将这个无符号字符转换为std::string
类型
xmlChar* name = "Some data";
我尽了最大努力进行打字,但找不到转换的方法。
String或
std::String?什么是
String,如果你不是指
std::String`?对不起@Mats peterson,顺便说一下它的std::stringUse reinterpret_cast看到这个[[1]:可能的重复我可以理解为什么人们可能希望将xmlChar
声明为无符号字符
。遗憾的是,它不能很好地与任何标准库配合使用:strlen()
和std::string
都需要char
。因此,如果您有任何影响,请更改此项。(使用char
的XML仍然比使用带符号的char
的拉丁语-1痛苦得多。)我发现,在某些情况下,reinterpret cast会在结尾处生成一些垃圾字符。由于这些字符很容易被截断,所以我没有深入研究,但我想我会提到这一点,以防我不是一个人。我不是一个人,你可能看到垃圾字符,因为你的无符号字符数组没有以空终止符结尾一般来说,在不考虑NUL的情况下从类型强制转换为字符串类型是危险的,如果您的代码与OP的示例有任何不同(字符串文本已经有空终止符),您应该仔细考虑这一点根据这个答案:如果您事先知道字符串的大小,似乎可以避免一些问题:std::string sName(reinterpret_cast(name),name_len);
std::string sName(reinterpret_cast<char*>(name));
std::string sName((char*) name);