Массив char, возвращаемый string.c_str (), завершается нулем. Если функция tinyXML принимает буфер char *, не заканчивающийся нулем, то вы, вероятно, получите неожиданное поведение.
const char * c_str () const;
Получить эквивалент строки C
Создает последовательность с нулевым символом в конце
символов (c-string) с одинаковыми
содержание как строковый объект и
возвращает его как указатель на массив
символы.
Завершающий нулевой символ
автоматически добавляется.
Нет, его не нужно выпускать. Деструктор String сделает это за вас.
Возвращенный массив указывает на
внутреннее расположение с необходимым
место для хранения этой последовательности
символы плюс его окончание
нулевой символ, но значения в этом
массив не должен быть изменен в
программа и предоставляется только остаться
без изменений до следующего звонка
непостоянная функция-член
строковый объект.
источник: http://www.cplusplus.com/reference/string/string/c_str/