DirectoryIterator可能存在错误

问题描述 投票:1回答:1

使用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;
}

我在Msys2和Windows 7(使用Windows 10测试)下使用带有gcc 8.2的Mingw。使用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中无效?

任何线索?谢谢

c++ iterator directory mingw poco-libraries
1个回答
1
投票

编译你的程序,我收到下一条消息:“Compiling POCO on Windows without #define POCO_WIN32_UTF8 is deprecated

你需要用#define POCO_WIN32_UTF8.编译

#define POCO_WIN32_UTF8
#include "Poco/DirectoryIterator.h"
© www.soinside.com 2019 - 2024. All rights reserved.