gpt4 book ai didi

c++ - 如何运行 if 语句以使用 file.cFileName 查找特定文件或文件夹

转载 作者:行者123 更新时间:2023-11-28 05:26:51 27 4
gpt4 key购买 nike

例如,我想在 %APPDATA% 目录中找到一个名为“DATABASE”的特定文件夹。

我试过:

#include <iostream>
#include <windows.h>

using namespace std;

int main(){

string path = getenv("appdata");
path += "\\*";

WIN32_FIND_DATA file;
HANDLE search_handle = FindFirstFile(path.c_str(), &file);

if (search_handle){
do{
cout << file.cFileName << endl; // Prints all the files/folders in %appdata%
}while (FindNextFile(search_handle, &file));
}

// Real Problem Below. . .

if(file.cFileName == "DATABASE"){ // Doesn't work
cout << "Folder Found! << endl;
}else{
cout << "Error: Folder not found. << endl;
}


getchar();

return 0;
}

它没有按照我的意愿执行,是否有其他方法可以做到这一点?

最佳答案

这不是 Java 或 C#。与指针相比,数组的 == 运算符不是这样工作的。

如果您查看 cFileName 成员的定义,它是这样的:

TCHAR    cFileName[MAX_PATH];

根据您是为 Unicode 还是 MBCS 构建,TCHAR 是 WCHAR 或 char。

如果您真的想进行比较,请使用 _tcsicmp()。我说使用 _tcsicmp() 而不是 _tcscmp() 因为在 Windows 中,文件名不区分大小写。您的问题代码行可以这样解决:

if(0 ==_tcsicmp(file.cFileName, _T("DATABASE"))){ // works now

_tcsicmp() 是 stricmp() 的 TCHAR 等价物。一般来说,如果您在 Visual C++ 中创建一个新项目,它通常会启用 Unicode 字符串。

关于c++ - 如何运行 if 语句以使用 file.cFileName 查找特定文件或文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392688/

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