我需要从文件名中获取扩展名并将其与我的扩展数组进行比较.但看起来像TCHAR没有类似strpos()函数,所以我走了一个数组TCHAR(不是最好的解决方案?)来搜索'.'符号并提取文件扩展名.但它不起作用.
for (int i = 0; i < extCount; i++)
{
//wsprintf(fileName, L"%d", extCount);
//_tcscpy_s(fileName, extensions[i]);
_tcscpy_s(fileName, fileData.cFileName);
for (int k = wcslen(fileName); k >= 0; k--)
{
if (fileName[k] == (LPCWSTR)TCHAR('.'))
{
wsprintf(temp, L"%c", fileName[k]);
MessageBox(NULL, fileName[k], L"????", MB_OK);
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题是,如何以最简单和最有效的方式获取和比较文件扩展名?还有一个问题 - 我真的应该使用TCHAR吗?因为这种类型有很多麻烦.他们什么时候练习?
您可以使用PathFindExtensionWindows API函数(因为您显然是使用已发布的代码编写Windows代码).这是shlwapi.dll你需要#include <shlwapi.h>和你的项目链接shlwapi.lib.
它返回一个指向'.'文件扩展名开头的指针,因此您可以将此指针传递给字符串比较函数,_wcsicmp以便比较它.
顺便说一句,TCHAR是一个扩展为char或者wchar_t取决于您的项目是为ANSI还是Unicode构建的宏.它不是一个类,也没有方法,TCHAR数组只是一个字符数组.