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)。

私はミゲルに同意しなければなりませんが、あなたはここで多くの仕事をしています。

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 に答える