Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Qt5.4和Clang(64位)在Mac 10.9上出现Zipios错误_C++_Macos_Qt_Clang - Fatal编程技术网

C++ 使用Qt5.4和Clang(64位)在Mac 10.9上出现Zipios错误

C++ 使用Qt5.4和Clang(64位)在Mac 10.9上出现Zipios错误,c++,macos,qt,clang,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.

我尝试使用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();

我能纠正这个错误。下面的代码更改对我有用-

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代码就有了一些想法,这就是有效的方法

你应该把它作为一个答案,而不是回答我自己的问题?允许这样做吗,我不知道:PSure它是:)(有些人甚至提出几乎不可能的问题只是为了提供答案!)您现在可以解释一下好处是什么,更改如何修复您的解决方案,错误是什么。。。但这取决于你:)