在c++中查找文件中的特定文件

finding specific files in a file in c++

本文关键字:文件 查找 c++      更新时间:2023-10-16

我有一个名为mama的文件。该文件包含三个文件,分别名为child1、child2和child3。Child1包含5个文本,child2包含7个文本,child3包含4个文本。妈妈的路径是c:用户约翰桌面妈妈。很抱歉我的写作方式,但我正试图准确地解释我的情况。我的目标是找到所有这些文本(16个)的路径,这样我就可以用它们做事情。我认为一个函数可以找到这些路径并把它们放到一个链表中

struct paths
{
   string pathName;
   paths *next;
};

正是我需要一个一个地使用它们。我发现了一些关于FindFirstFile()和FindNextFile()的例子,我也试图运行一些代码,这样我就可以通过一些测试来理解它是如何工作的,但错误一直出现,禁止测试和理解的机会。顺便说一下,我使用的是visual Studio 2008(这是他们说我们应该使用的,所以我想我不能改变它)。如果有人能帮助我理解或得到任何链接,将有一些好的和某种程度上容易理解的例子,我将非常感谢。

编辑:

例如代码

#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
    int main()
    {
        WIN32_FIND_DATA fData;
        void * handle = FindFirstFile( "C:/Users/John/Desktop/*", &fData );//<~~~error
        cout << fData.cFileName;
        system("pause");
    }
C2664: 'FindFirstFileW':无法将参数1从'const char[24]'转换为'LPCWSTR'

首先,你应该声明一个WIN32_FIND_DATA结构

然后找到目录下的第一个文件(例如C:/Users/John/Desktop/*)

paths * head;
WIN32_FIND_DATA fData;
void * handle = FindFirstFile( "C:/Users/John/Desktop/*", &fData );

检查它是否是你想要的文件,使用:

fData.cFileName // the file name is stored here ( ie C:/Users/John/Desktop/child2.txt )

可以在循环中这样做:

while( !CheckFileNameHere( fData.cFileName, head->pathname ) ) FindNextFile( handle, &fData );

递增列表:

head = head->next;

或完成:

CloseHandle( handle );

如何获得路径取决于您。如果您已将它们存储在文件中,请使用来自stdio.h、iostream或windows.h的函数。如果你把它写成一个函数,你可以对你拥有的任何文件名重用它。

如果你使用这些方法得到运行时错误,你应该张贴准确的错误,以便我们可以找出为什么他们不工作。编译错误也是如此。