我正在尝试将字符串转换为xmlChar。编译器说没有从const字符串到xmlChar的合适转换函数。这就是代码的样子:
bool ClassName::openFile(const String& ZipFile)
{
//convert
const xmlChar *temp = (const xmlChar)ZipFile; //ZipFile has an error here. ZipFile is path and filename
...
}
有什么想法吗?我用Google搜索,人们正在从xmlChar转换为字符串,但不是这个方向。
答案 0 :(得分:3)
xmlChar
只是unsigned char
的typedef。只需这样做你的句子:
const xmlChar *temp = ZipFile.c_str();
答案 1 :(得分:0)
不安全但删除了开销。
xmlChar *temp = reinterpret_cast<xmlChar*>(ZipFile);
但您必须了解 reinterpret_cast
的使用情况答案 2 :(得分:0)
这个 xml 库是为标准 C 编写的。当时使用的 C 样式转换方法利用了库中的 BAD_CAST 关键字。示例:
rc = xmlTextWriterWriteElement(writer, BAD_CAST "Value1", BAD_CAST "DATA1");
if (rc < 0) {
throw EXCEPTION("Error in xmlTextWriterWriteElement");
}
但是对于 C++,如果你想避免 C 风格的强制转换,你能做的最好的事情是:
rc = xmlTextWriterWriteElement(writer, const_cast<xmlChar*>(reinterpret_cast<const xmlChar *>("Value1")), const_cast<xmlChar*>(reinterpret_cast<const xmlChar *>("DATA1")));
请注意,由于此处的用例,此转换的常见危险不是问题。我们可以放心地假设底层库不会对我们做任何讨厌的事情。