我正在尝试从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
压缩它? 最佳答案
确保在pugiconfig.hpp文件中注释了no-STL定义:
// Uncomment this to disable STL
// #define PUGIXML_NO_STL
stringstream header 包含是必需的:
#include <sstream>
也就是说,请注意:您是直接在
c_str()
对象上调用一个不存在的方法std::ostringstream
,而不是在str()
返回的其底层字符串上调用(而且您的编译器输出应类似于:在'std中没有名为'c_str'的成员:: basic_ostringstream')。您的代码应如下所示:
QByteArray data = qCompress(stream.str().c_str(), 9);
关于c++ - 从pugixml压缩数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49085013/