看到documentation of XmlDocument::parse(Ch*) in RapidXml,我想知道字符缓冲区是'非const'。当缓冲区需要通过解析器的任何此类修改来增长时,我不确定这通常如何工作。图书馆会不断增长?如果我要求它解析,它应该解析对吗?否则它应该被称为ParseAndPossibleModifyButLetMeKnowIfYouHadToRegrowTheBufferInWhichCaseHeyCheckThisFlagAndCopyThisPointer
或类似的东西。
我错过了什么吗?我想要了解这个库,因为我想要一些简单易用的东西来从C ++中动态打开和追加/编辑xml文件,但是如果有更简单/更好的选择请不要犹豫,提出这样的建议作为答案! !
答案 0 :(得分:1)
RapidXML尽力成为就地解析器。当它不能时,它将分配内存(链接到xml_document<>
的生命周期),但仅在必要时。由于XML读取,字符串必须实际增长是相当罕见的。
它将修改字符串的内容(除非你设置了非修改标志),它的对象将保持对该字符串的引用。所以你需要确保缓冲区存活足够长的时间。但除此之外,没什么可担心的。
答案 1 :(得分:1)
Rapidxml永远不需要增长缓冲区。幸运的是,UTF8编码的XML总是在字符串周围有足够的空间来插入终止空字符并扩展内置字符实体。
因此,唯一的修改将是缓冲区的内容,而不是它的大小。