0
for (fs::directory_iterator iter(realPath); iter != end_iter; ++iter )
        {
            if (iter->path().extension() == ".png"){
                fs::path currentPath = iter->path();
                const char *filename = const_cast<char*>(currentPath.string().c_str());
                std::cout << iter->path().leaf() << std::endl;

                processFile(filename);
                std::cout <<"Hi" << std::endl;
            }
        }

这是我的代码,这里的 processFile 函数接受 char* 格式的文件名。上面的代码返回文件名的垃圾值。不知道获取文件名的最佳方法是什么。

4

1 回答 1

0

它在这里对我来说很好(Boost.1.52,Mac OS X,clang)。

虽然我必须同意 Miguel 的观点,但你在这里做了很多工作。

for (fs::directory_iterator iter(realPath); iter != end_iter; ++iter )
    if (iter->path().extension() == ".png") {
        fs::path currentPath = iter->path();
        std::cout << currentPath.leaf() << std::endl;
        processFile(currentPath.c_str ());
    }

并且根据您对代码的品味,您可以完全摆脱currentPath(替换为iter->path()

于 2012-12-31T15:57:32.103 回答