从TCHAR数组获取文件扩展名?

Iva*_*rov 0 c++ winapi

我需要从文件名中获取扩展名并将其与我的扩展数组进行比较.但看起来像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吗?因为这种类型有很多麻烦.他们什么时候练习?

Jon*_*ter 5

您可以使用PathFindExtensionWindows API函数(因为您显然是使用已发布的代码编写Windows代码).这是shlwapi.dll你需要#include <shlwapi.h>和你的项目链接shlwapi.lib.

它返回一个指向'.'文件扩展名开头的指针,因此您可以将此指针传递给字符串比较函数,_wcsicmp以便比较它.

顺便说一句,TCHAR是一个扩展为char或者wchar_t取决于您的项目是为ANSI还是Unicode构建的宏.它不是一个类,也没有方法,TCHAR数组只是一个字符数组.