繁体   English   中英

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

[英]Zipios error on Mac 10.9 using Qt 5.4 and Clang(64 bit)

我正在尝试使用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代码就得出了一些想法,这是行得通的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM