Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将无符号字符*转换为std::字符串_C++_Casting_Unsigned_Tizen - Fatal编程技术网

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);