Extracting an archive

Archive formats such as zip

GetNextEntry() returns a pointer to entry object containing the meta-data for the next entry in the archive (and gives away ownership). Reading from the input stream then returns the entry's data. Eof() becomes true after an attempt has been made to read past the end of the entry's data.

When there are no more entries, GetNextEntry() returns NULL and sets Eof().

    // 'smart pointer' type created with wxDEFINE_SCOPED_PTR_TYPE
    wxZipEntryPtr entry;

    wxFFileInputStream in(_T("test.zip"));
    wxZipInputStream zip(in);

    while (entry.reset(zip.GetNextEntry()), entry.get() != NULL)
        // access meta-data
        wxString name = entry->GetName();
        // read 'zip' to access the entry's data

The smart pointer type wxZipEntryPtr can be created like this:

    #include <wx/ptr_scpd.h>

ymasuda 平成17年11月19日