c++ - 使用 Qt 5.4 和 Clang(64 位)的 Mac 10.9 上的 Zipios 错误

标签 c++ macos qt clang

我正在尝试使用 Zipios++(v2.1.0) C++ 库在 Mac 10.9 上压缩文件。下面是我将一组文件压缩到存档中的代码。

zipios::ZipFile zf;
zipios::DirectoryCollection dirCollection(<folder with all files>);
zipios::DirectoryCollection finalCollection;

zipios::FileEntry::vector_t files = dirCollection.entries();

// selecting only the necessary files
for(auto it = files.begin(); it != files.end(); ++it)
{
    // THIS IS WHERE I GET AN ERROR
    zipios::DirectoryEntry dirEntry = dynamic_cast<zipios::DirectoryEntry>(**it);
    if(arrFiles.contains(QString::fromStdString(dirEntry.getFileName())))
        finalCollection.addEntry(*(*it));
}

std::filebuf fb;
fb.open (strFileName.toStdString(), std::ios::out);
std::ostream os(&fb);
zf.saveCollectionToArchive(os, finalCollection);
fb.close();
zf.close();

我需要迭代文件夹内的文件,如果它们与我要包含的文件列表相匹配,我将它们添加到 finalCollection 进行归档。但我无法正确转换。有没有人有使用 Zipios 将多个文件压缩到一个文件的示例代码?有关以下代码的任何建议都会有所帮助。谢谢。

更新: 我能够修复错误。以下代码更改对我有用-

for(auto entry(files.begin()); entry != files.end(); ++entry)
{
    if(!(*entry)->isDirectory())
    {
      if(arrFiles.contains(QString::fromStdString((*entry)->getFileName())))
        finalCollection.addEntry(*(*entry));
    }
}

最佳答案

我能够修复错误。以下代码更改对我有用-

for(auto entry(files.begin()); entry != files.end(); ++entry)
{
    if(!(*entry)->isDirectory())
    {
      if(arrFiles.contains(QString::fromStdString((*entry)->getFileName())))
        finalCollection.addEntry(*(*entry));
    }
}

问题是我没有正确取消对指针的引用,仔细查看 zipios 代码给出了一些想法,这就是工作原理!

关于c++ - 使用 Qt 5.4 和 Clang(64 位)的 Mac 10.9 上的 Zipios 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317174/

相关文章:

java - 通过 JNI 从 C++ 返回空字符串到 Java

iphone - 如何将 .ipa 文件安装到我的 iPhone 模拟器

objective-c - QTMovie 添加图像 :forDuration:withAttributes: can't be played by QuickTime Player X

c++ - QT - 将鼠标悬停在 QLabel 上时发出信号

表达式中的 C++ 运算符重载

c++ - 从同一个指针构造两个 shared_ptr 对象

c++ - segmentation 故障的常见原因的明确列表

linux - 在我的 MAC 终端和 Vim 上设置 solarized colorscheme 时遇到问题

css - PyQt4:将样式表限制为父级

c++ - CMAKE:包含用 OBJECT 找不到的文件