c++ - LPCTSTR 到 LPCSTR 转换

标签 c++ string winapi file-handling

我正在尝试使用 GetFileInformationByHandle() 获取现有文件的信息。我执行所需任务的函数接收 LPCTSTR Filename 作为参数。这是代码:

getfileinfo(LPCTSTR Filename)
{
    OFSTRUCT oo;
    BY_HANDLE_FILE_INFORMATION lpFileInformation;
    HFILE hfile=OpenFile((LPCSTR)Filename,&oo,OF_READ);
    int err=GetLastError();
    GetFileInfomationByHandle((HANDLE)hfile,&lpFileInformation);
}

如果我将 Filename 声明为 LPCSTR,上面的代码工作正常,但根据我的功能要求,我在 LPCTSTR 中收到文件名,所以如果我使用类型转换然后 openfile() 找不到指定的文件并返回 -1。

如果文件名是LPCTSTR,谁能告诉我如何获取文件信息?或者如何将 LPCTSTR 转换为 LPCSTR

为什么这种类型转换不起作用?我相信这应该有效。

最佳答案

只是转换指针不会将指向的实际数据(即文件名)更改为八位字符。

阅读 the docs at MSDN建议改用 CreateFile 来处理 LPCTSTR 文件名。

关于c++ - LPCTSTR 到 LPCSTR 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20834289/

相关文章:

c++ - 我可以通过使用参数构造基对象来从派生类创建对象吗?

c++ - Windows.h - SetWindowText 显示 CR-LF 字符

返回实例变量的 c++ 方法可以访问变量中的数据但不能更改它,但编译时不会产生错误

c++ - 指向新对象的智能指针

java - 检查 2 个不同的相等实例(包含示例)

java - 使用正则表达式分割字符在java中返回空值

string - 如何 split 绳索树?

c++ - 获取远程文件的安全细节

c++ - 为什么 LogonUserW 失败并显示错误代码 183 (ERROR_ALREADY_EXISTS)

c++ - WritePrivateProfileString - 不可预测