Independentsoft
Professional software libraries for developers
Home
Purchase
Support
Company
Contact
PST C++
>
Tutorial
> List all folders
The following example shows you how recursively get and list all folders.
C++ example
#include
#include
#include
#include
#include "independentsoft/pst/pst_file.hpp" #include "independentsoft/pst/folder.hpp" using namespace independentsoft::pst; static std::string toUtf8(const text& s) { std::string result; for (char16_t c : s) { if (c < 0x80) { result += static_cast
(c); } else if (c < 0x800) { result += static_cast
(0xC0 | (c >> 6)); result += static_cast
(0x80 | (c & 0x3F)); } else { result += static_cast
(0xE0 | (c >> 12)); result += static_cast
(0x80 | ((c >> 6) & 0x3F)); result += static_cast
(0x80 | (c & 0x3F)); } } return result; } int main() { PstFile file("c:\\testfolder\\Outlook.pst"); Folder* startFolder = file.mailbox_root(); std::vector
folders = startFolder->get_folders(true); std::map
parents; std::string parentFolder = toUtf8(startFolder->display_name()); parents[startFolder->id()] = parentFolder; for (size_t i = 0; i < folders.size(); i++) { Folder& currentFolder = folders[i]; parentFolder = parents[currentFolder.parent_id()]; std::string currentFolderPath = parentFolder + "\\" + toUtf8(currentFolder.display_name()); parents[currentFolder.id()] = currentFolderPath; std::cout << "Id: " << currentFolder.id() << std::endl; std::cout << "Name: " << toUtf8(currentFolder.display_name()) << std::endl; std::cout << "Type: " << toUtf8(currentFolder.container_class()) << std::endl; std::cout << "Item count: " << currentFolder.item_count() << std::endl; std::cout << "Path: " << currentFolderPath << std::endl; std::cout << "--------------------------------------------------------" << std::endl; } file.close(); return 0; }
Need help? Ask our developers:
Name*
Email*
Message*