gpt4 book ai didi

c++ - Windows Search C++(MFC) CFindFiles 路径分隔符

转载 作者:行者123 更新时间:2023-11-28 08:05:52 33 4
gpt4 key购买 nike

鉴于以下代码,我需要它在韩文/日文 Windows SO 上工作。它就是行不通,我也说不出为什么……

你们可以帮帮我吗?

void RecurseSearch(LPCTSTR pstr, CString serchTerm, CSimpleMap<CString,CString>* arr)
{
CFileFind finder;
// build a string with wildcards
CString strWildcard;
int code_point = 0x5c ;
WCHAR chr = (WCHAR) code_point;
strWildcard.Format(_T("%s%c*%s*"), pstr,chr,serchTerm);
CString actualFolder;
// start working for files
BOOL bWorking = finder.FindFile(strWildcard);

while (bWorking)
{

bWorking = finder.FindNextFile();
actualFolder=finder.GetFilePath();
// skip . and .. files; otherwise, we'd
// recur infinitely!

if (finder.IsDots())
continue;

// if it's a directory, recursively search it

else if (finder.IsDirectory())
{
CString str = finder.GetFilePath();
RecurseSearch(str, serchTerm, arr);
}
else
{
if(arr->GetSize()>200) return;
if(arr->FindKey(finder.GetFileURL())==-1)
arr->Add(finder.GetFileURL(),finder.GetFileURL());
}
}
bWorking = finder.FindFile(pstr+(CString)chr+(CString)_T("*"));
while(bWorking)
{
bWorking = finder.FindNextFile();
actualFolder =finder.GetFilePath();
if (!finder.IsDirectory() || finder.IsDots()) continue;
else
{
RecurseSearch(actualFolder, serchTerm, arr);
}

}
finder.Close();
}

此代码在美国 Windows 上工作得很好,但在韩语上却不行......我什至将路径分隔符设置为正确的 unicode 但什么都没有...

编辑:我已经确定了错误,它与 ItemNames 和 ItemDisplayNames 相关。我需要搜索 ItemDisplayNames,但 CFindFile 搜索 ItemName。

我更改代码以使用 ISearchFolderItemFactory,然后执行 AQS 查询。

无论如何都是 TY 家伙!

最佳答案

使用反斜杠作为路径分隔符。无论当前使用何种语言,反斜杠在所有情况下都被记录为可以接受。可能是 MFC 搞砸了......

这里有两个链接应该会有帮助。

http://msdn.microsoft.com/en-us/library/dd317748(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#naming_conventions

关于c++ - Windows Search C++(MFC) CFindFiles 路径分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306092/

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