如何将字符串转换为xmlChar

时间:2014-11-05 19:33:27

标签: c++ type-conversion libxml2

我正在尝试将字符串转换为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转换为字符串,但不是这个方向。

3 个答案:

答案 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")));

请注意,由于此处的用例,此转换的常见危险不是问题。我们可以放心地假设底层库不会对我们做任何讨厌的事情。