【问题标题】:Possible bug with DirectoryIteratorDirectoryIterator 可能存在的错误
【发布时间】:2019-03-15 12:35:50
【问题描述】:

使用 Poco 文档中的 DirectoryIterator 示例,我遇到了一些问题。

这是源代码:

#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 下使用带有 gcc 8.2 的 Mingw(也在 Windows 10 上测试过)。使用 Eclipse CDT 作为 IDE。

在调试模式下编译并运行二进制文件时,抛出异常“找不到路径”。

在发布模式下编译并运行二进制文件时,它可以工作,但迭代器“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】:

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

    你需要用#define POCO_WIN32_UTF8.编译

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2013-10-11
      • 2019-12-22
      • 2012-01-21
      • 2018-12-31
      • 2016-07-30
      相关资源
      最近更新 更多