加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 调用FindFirstFile时“<”的含义是什么?

发布时间:2020-12-16 09:56:56 所属栏目:百科 来源:网络整理
导读:参见英文答案 FindFirstFile undocumented wildcard or bug?????????????????????????????????????1个 如果我创建一个包含“Hello.txt”的目录,那么以下代码将输出“Hello.txt”: #include windows.h#include iostreamint _tmain(int argc,_TCHAR* argv[]){
参见英文答案 > FindFirstFile undocumented wildcard or bug?????????????????????????????????????1个
如果我创建一个包含“Hello.txt”的目录,那么以下代码将输出“Hello.txt”:

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

int _tmain(int argc,_TCHAR* argv[])
{
    WIN32_FIND_DATA findData = {};
    HANDLE hFind = ::FindFirstFile(L"<.txt",&findData);
    if (hFind != INVALID_HANDLE_VALUE)
    {
        std::wcout << findData.cFileName << std::endl;
        while (::FindNextFile(hFind,&findData))
        {
            std::wcout << findData.cFileName << std::endl;
        }
        ::CloseHandle(hFind);
    }
    else
    {
        std::wcout << "FindFirstFile: " << ::GetLastError() << std::endl;
    }
    return 0;
}

但为什么“<”在对FindFirstFile的调用中表现为“*”? MSDN表示只有外卡租船人在这次通话中有效(即?或*). https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx

编辑:

似乎是非常相关的FindFirstFile undocumented wildcard or bug?

解决方法

<是文件名中的无效字符.它是一个保留字符,如下所示: Naming Files,Paths,and Namespaces – Naming Conventions.

我的猜测是,FindFirstFile的实现只是将所有保留字符视为通配符.也许这是一个向后兼容的原因.完全相同,因为<在这里正式无效,并且由于行为没有记录,你不应该依赖它. 更新 感谢@eryksun在评论中提供了一些低级细节.实际执行搜索的低级别层使用<和>作为外卡. Win32层翻译*和?到<和>在将搜索字符串传递给下层之前.这解释了为什么*和<从高层可以互换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读