我在QByteArray中有一个XML文件我使用indexOf方法在数组中查找字符串,但返回的位置不正确。如果我使用qDebug检查数据内容,我可以看到数据有转义字符,这不是问题,但我不认为indexOf正在计算转义字符。
例如结果来自:
qDebug() << arybytXML;
结果的片段是:
<?xml version="1.0" encoding="utf-8"?><!--\n Node: gui\n Attrbuttes: left, right, top and bottom defines the pixel white space to allow\n from the edge of the display\n\t\tlanguage, should be set to the appropriate country code, an XML file named using\n\t\tthe country code must exist, e.g. 44.xml\n//-->\n<gui id=\"root\" bottom=\"0\" left=\"0\" right=\"0\" top=\"24\" language=\"44\">
我使用代码:
intOpenComment = arybytXML.indexOf("<!--");
结果是intOpenComment是39.如果我然后搜索结束注释并尝试提取数据我得到错误的结果:
intClosingComment = arybytXML.indexOf("-->", intOpenComment);
QString strComment = arybytXML.mid(intOpenComment
,intClosingComment + strlen("-->"));
结果:
<!--\n Node: gui\n Attrbuttes: left, right, top and bottom defines the pixel white space to allow\n from the edge of the display\n\t\tlanguage, should be set to the appropriate country code, an XML file named using\n\t\tthe country code must exist, e.g. 44.xml\n//-->\n<gui id=\"root\" bottom=\"0\" left=\"0\" rig"
结果应该在 - &gt;之后停止,为什么还有更多数据?
答案 0 :(得分:0)
问题在于,当使用mid时,第二个参数应该是字节数,并且需要具有&lt; intOpenComment&#39;除去。