我在类型转换方面有点困惑。我有一个xmlChar*
类型的字符串(即unsigned char*),我想将这个无符号字符转换为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);
我认为被接受的解决方案有点冒险,而且说实话并不是很好。我认为更好的解决方案是使用std::to_string
:
unsinged char char1{192};
auto result = std::to_string(char1)
现在char1
等于std::string("192")
String
还是std::string
?如果你不是指std::string
,那么String
是什么? - Mats PeterssonxmlChar
声明为unsigned char
。但令人遗憾的是,它与任何标准库都不能很好地配合使用:strlen()
和std::string
都需要用到char
类型。所以,如果你有任何影响力,请更改这一点。(而使用带符号的char
来处理Latin-1仍然比使用char
处理XML容易得多。) - James Kanze