gpt4 book ai didi

c++ - 与 GetFileAttributes 一起使用的 LPCTSTR 类型转换

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:45 25 4
gpt4 key购买 nike

我正在尝试构建一种方法来查看文件是否存在。当前的方法不是完整的形式。我想弄清楚为什么它不像代码那样工作。

    BOOL FileExists(LPCTSTR szPath)
{
//MessageBox(NULL,szPath,L"File Error",MB_OK);
DWORD dwAttrib = GetFileAttributes(szPath);

switch(dwAttrib)
{

case FILE_ATTRIBUTE_DIRECTORY:
MessageBox(NULL,L"FILE_ATTRIBUTE_DIRECTORY",L"File Error",MB_OK);
break;
case FILE_ATTRIBUTE_ARCHIVE:
MessageBox(NULL,L"FILE_ATTRIBUTE_ARCHIVE",L"File Error",MB_OK);
break;
case FILE_READ_ONLY_VOLUME:
MessageBox(NULL,L"FILE_READ_ONLY_VOLUME",L"File Error",MB_OK);
break;
case FILE_INVALID_FILE_ID:
MessageBox(NULL,L"FILE_INVALID_FILE_ID",L"File Error",MB_OK);
break;
default:
MessageBox(NULL,(LPCWSTR)dwAttrib,L"File Error",MB_OK);
break;
}
return true;
}

我是这样调用方法的:

FileExists((LPCWSTR)path.c_str());

这是我的文件所在的地方:

std::string path = "C:\\smiley.bmp"

我总是在这里结束,不管开关的编码顺序是什么:

FILE_INVALID_FILE_ID

我想知道我对 "LPCTSTR" 的类型转换是否正确。

因为我尝试使用 MessageBox 来显示 "szPath" 的内容,但它显示为人类无法阅读的格式。

我提供的路径是正确的,正确转义。我如何检查 "szPath" 是否包含正确的信息?

最佳答案

std::string 基于char,所以当您调用.c_str() 时,您可以将char *

但是LPCWSTR 是一个指向宽字符 字符串的指针。

我相信,如果您在启用 UNICODE 的情况下进行编译(因此 LPCTSTR == LPCWSTR),您将需要使用 std::wstring.

相关:

关于c++ - 与 GetFileAttributes 一起使用的 LPCTSTR 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924473/

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