rapidxml :: print требует выходного итератора для генерации вывода, поэтому с ним работает символьная строка. Но это рискованно, потому что я не могу знать, достаточно ли длинен массив с фиксированной длиной (например, 2048 байт) для хранения всего содержимого XML.
Правильный способ сделать это - передать выходной итератор потока строк, чтобы разрешить расширение буфера при выгрузке в него XML.
Мой код похож на ниже:
std::stringstream stream;
std::ostream_iterator<char> iter(stream);
rapidxml::print(iter, doc, rapidxml::print_no_indenting);
printf("%s\n", stream.str().c_str());
printf("len = %d\n", stream.str().size());