Может ли RapidXML API увеличить буфер? - PullRequest
0 голосов
/ 23 февраля 2012

Просматривая документацию для XmlDocument :: parse (Ch *) в RapidXml , я задаюсь вопросом о том, что буфер символов не является "const". Я не уверен, как это будет работать в целом, когда буфер должен увеличиваться при любых таких модификациях парсера. Будет ли библиотека расти? если я прошу его разобрать, он должен просто разобрать правильно? в противном случае его следует назвать ParseAndPossibleModifyButLetMeKnowIfYouHadToRegrowTheBufferInWhichCaseHeyCheckThisFlagAndCopyThisPointer или что-то в этом роде.

Я что-то упустил? Я хочу понять эту библиотеку, потому что я хочу что-то простое в использовании для открытия и добавления / редактирования файлов XML на лету из C ++, но если есть более простые / лучшие альтернативы , не стесняйтесь делать такие предложения в качестве ответов! !

Ответы [ 2 ]

1 голос
/ 11 июня 2012

Rapidxml никогда не нуждается в увеличении буфера.По счастливой случайности XML-код в UTF8 всегда имеет достаточно места вокруг строк, чтобы вставить завершающие нулевые символы и развернуть встроенные символьные объекты на месте.

Таким образом, единственная сделанная модификация будет касаться содержимого буфера, а не его размера.

1 голос
/ 23 февраля 2012

RapidXML старается быть на месте парсером.Когда это невозможно, он будет выделять память (связанную со временем жизни xml_document<>), но только при необходимости.В редких случаях строка действительно увеличивается из-за чтения XML.

Она изменит содержимое строки (если вы не установите неизменяющий флаг), и ее объекты будут хранить ссылки на эту строкувокруг.Поэтому вам нужно убедиться, что буфер выживет достаточно долго.Но кроме этого, не о чем беспокоиться.

...