gpt4 book ai didi

qt - 使用 QuaZip 将 QStream 写入 zip 文件

转载 作者:行者123 更新时间:2023-12-01 19:35:07 25 4
gpt4 key购买 nike

我想用 QuaZip 在 ziarchive 的文本文件中写一个 QString。我在 WinXP 上使用 Qt Creator。使用我的代码,存档中的文本文件已创建但为空。

QDomDocument doc;
/* doc is filled with some XML-data */

zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));

QTextStream ts ( &file );
ts << doc.toString();

file.close();
zipfile.close();

当我尝试使用 QFile 时,它​​按预期工作:

QDomDocument doc;
/* doc is filled with some XML-data */

QFile file("test.xml");
file.open(QIODevice::WriteOnly);

QTextStream ts ( &file );
ts << doc.toString();

file.close();

我在 test.xml 中找到了正确的内容,所以字符串就在那里,但不知何故 QTextStream 不想与 QuaZipFile 一起工作。

当我使用 QDataStream 而不是 QTextStream 执行此操作时,会有一个输出,但不是正确的输出。 QDomDocument文档; /* doc 充满了一些 XML 数据 */

zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));

QDataStream ts ( &file );
ts << doc.toString();

file.close();
zipfile.close();

test.zip 中的 foo.xml 填充了一些数据,但格式错误(每个字符之间有一个额外的 'nul' 字符)。

如何在 zip 存档的文本文件中写入字符串?

谢谢,保罗

最佳答案

您不需要 QTextStream 或 QDataStream 来将 QDomDocument 写入 ZIP 文件。

您可以简单地执行以下操作:

QDomDocument doc;
/* doc is filled with some XML-data */

zipfile = new QuaZip("test.zip");
zipfile->open(QuaZip::mdCreate);
QuaZipFile file(zipfile);
file.open(QIODevice::WriteOnly, QuaZipNewInfo("foo.xml"));

// After .toString(), you should specify a text codec to use to encode the
// string data into the (binary) file. Here, I use UTF-8:
file.write(doc.toString().toUtf8());

file.close();
zipfile->close();

关于qt - 使用 QuaZip 将 QStream 写入 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com