使用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(也经过Windows 10测试)下使用带有gcc 8.2的Mingw。使用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上运行?
有任何线索吗? 谢谢
答案 0 :(得分:1)
编译您的程序时,我收到下一条消息:“ Compiling POCO on Windows without #define POCO_WIN32_UTF8 is deprecated
”
您需要使用#define POCO_WIN32_UTF8.
#define POCO_WIN32_UTF8
#include "Poco/DirectoryIterator.h"