我正在尝试压缩pugi::xml_document
中的数据。这就是我试过的:
template<class T> void save(const T &object, const QString &path)
{
pugi::xml_document doc;
object.exportXML(doc);
std::ostringstream stream;
doc.save(stream);
QByteArray data = qCompress(stream.c_str(), 9);
QFile outfile(path);
outfile.write(data);
outfile.close();
}
但它不起作用,因为doc.save()
需要ostream
而不是ostringstream
。如何将树格式化为xml_document
中的字符串并使用qCompress
对其进行压缩?
答案 0 :(得分:1)
确保在 pugiconfig.hpp 文件中注释了no-stl define:
// Uncomment this to disable STL
// #define PUGIXML_NO_STL
stringstream标头包含是必需的:
#include <sstream>
那就是说,注意:你直接在c_str()
对象上调用一个非现有方法std::ostringstream
,而不是在str()
(和你的编译器)返回的底层字符串上调用输出应该是这样的:'std :: basic_ostringstream'中没有名为'c_str'的成员。)
您的代码应该是这样的:
QByteArray data = qCompress(stream.str().c_str(), 9);