C++ Windows 文件搜索产生

问题描述

我需要两个函数

为此,我显然需要遍历所有文件我有以下代码可以正常工作,并且打印所有文件递归。

我希望它在每次调用产生一个文件,或者类似的东西。

void FindFile(const std::wstring &directory)
{
    std::wstring tmp = directory + L"\\*";
    WIN32_FIND_DATAW file;
    HANDLE search_handle = FindFirstFileW(tmp.c_str(),&file);
    if (search_handle != INVALID_HANDLE_VALUE)
    {
        std::vector<std::wstring> directories;

        do
        {
            if (file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                if ((!lstrcmpW(file.cFileName,L".")) || (!lstrcmpW(file.cFileName,L"..")))
                    continue;
            }

            tmp = directory + L"\\" + std::wstring(file.cFileName);
            std::wcout << tmp << std::endl;

            if (file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                directories.push_back(tmp);
        }
        while (FindNextFileW(search_handle,&file));

        FindClose(search_handle);

        for(std::vector<std::wstring>::iterator iter = directories.begin(),end = directories.end(); iter != end; ++iter)
            FindFile(*iter);
    }
}

问题是 - 我还需要按文件内容搜索文件,为此我需要复制该代码并稍作修改,这将导致代码重复 - 这很糟糕。

我想要一个函数生成目录下的文件名,然后其他两个函数将能够使用它:

我找不到关于如何在 C++ 中实现这一点的任何好的信息(例如,在 Python 中似乎很容易)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)