Возможная ошибка с DirectoryIterator - PullRequest
1 голос
/ 15 марта 2019

Работа с примером DirectoryIterator, из документации Poco, у меня есть некоторые проблемы с ним.

Это исходный код:

#include "Poco/DirectoryIterator.h"
#include <iostream>

using Poco::DirectoryIterator;
using Poco::Path;

int main(int argc, char** argv) {
    std::string cwd(Path::current());

    DirectoryIterator it(cwd);
    DirectoryIterator end;

    while (it != end) {
        std::cout << it.name();
        if (it->isFile())
            std::cout << it->getSize();
        std::cout << std::endl;
        Path p(it.path());
        ++it;
    }

    return 0;
}

Я использую Mingw, с gcc 8.2, под Msys2 и Windows 7 (также тестировался с Windows 10). Использование Eclipse CDT в качестве IDE.

При компиляции в режиме отладки и запуске двоичного файла генерируется исключение "Путь не найден".

При компиляции в режиме Release и запуске двоичного файла это работает, но итератор "it" не развивается.

Всегда отображается « a.txt »

Я пробую пример с этим деревом каталогов:

/test//a.txt
/test//b.txt
/test//test2
/test/test2/c.txt
/test/test2/d.txt

Я протестировал тот же пример в Linux, и все работает нормально.

Почему это работает в Linux, но не в Windows?

Есть подсказка? Спасибо

1 Ответ

1 голос
/ 15 марта 2019

Компилируя вашу программу, я получаю следующее сообщение: "Compiling POCO on Windows without #define POCO_WIN32_UTF8 is deprecated"

Вам нужно скомпилировать с #define POCO_WIN32_UTF8.

#define POCO_WIN32_UTF8
#include "Poco/DirectoryIterator.h"
...