gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:18:48 25 4
gpt4 key购买 nike

我有一个名为 mama.该文件包含 3 个文件,分别名为 child1 child2 和 child3。 child1 包含 5 个 txts,child2 包含 7 个 txts,child3 包含 4 个 txts。妈妈的路径是 C:\Users\John\Desktop\mama 。抱歉我的写作方式,但我正在尝试准确解释我的情况。我的目标是找到所有这些 txts(数量为 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");
}

有 1 个错误:错误 1 ​​错误 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 的函数。如果将其编写为一个函数,则可以将它重复用于您拥有的任何文件名。

如果您在使用这些方法时遇到运行时错误,您应该发布确切的错误,以便我们找出它们不起作用的原因。编译错误也是如此。

关于c++ - 在C++中查找文件中的特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com