-1

在 RapidXml 中看到 XmlDocument::parse(Ch*) 的文档,我想知道字符缓冲区是“非常量”。当缓冲区需要通过解析器的任何此类修改来增长时,我不确定这将如何工作。图书馆会做成长吗?如果我要求它解析,它应该解析正确吗?否则它应该被称为ParseAndPossibleModifyButLetMeKnowIfYouHadToRegrowTheBufferInWhichCaseHeyCheckThisFlagAndCopyThisPointer或类似的东西。

我错过了什么吗?我想了解这个库,因为我想要一些易于使用的东西来从 C++ 即时打开和附加/编辑 xml 文件,但是如果有更简单/更好的选择,请不要犹豫,提出这样的建议作为答案!

4

2 回答 2

1

RapidXML 尽力成为一个就地解析器。如果不能,它将分配内存(与 的生命周期相关联xml_document<>),但仅在必要时。由于 XML 读取,字符串实际上必须增长是相当罕见的。

它将修改字符串的内容(除非您设置了非修改标志),并且其对象将保留对该字符串的引用。因此,您需要确保缓冲区存在足够长的时间。但除此之外,没有什么可担心的。

于 2012-02-23T04:38:09.110 回答
1

Rapidxml 永远不需要增加缓冲区。幸运的是,UTF8 编码的 XML 在字符串周围总是有足够的空间来插入终止空字符并在适当的位置扩展内置字符实体。

所以唯一的修改将是缓冲区的内容,而不是它的大小。

于 2012-06-11T13:30:27.110 回答