c++ - std::string 到 LPCTSTR

标签 c++ windows string

std::string如何转换为LPCTSTR典型问题的新版本。

阅读不同的 SO 帖子,我了解到我应该这样做:

CreateDirectory(path.c_str(),NULL);

编译器仍然报错,因为无法从 const char * 转换为 LPCTSTR

我试过:

CreateDirectory((LPCTSTR)path.c_str(),NULL);

没有错误!

仍然创建的目录(在正确的位置)被称为:

D:\\something\\㩄ぜ弲久䅓余屓䱆彄湡敤屲䵉ⴱ㠶ⴰⵃㅇ㉜洰⵭就䥄牃獥汵獴촀췍췍췍췍췍췍췍﷍﷽꯽ꮫꮫꮫﺫﻮﻮ

这不是我想要的,你可以猜到...

那我错过了什么?它与 UNICODE/ANSI 相关吗?我该如何解决这个问题?

最佳答案

尝试查看此页面:What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc .如果您使用的是 MSVC,那么您可能已经为项目设置了 Unicode,并且 LPCSTR 被“翻译”为 const wchar_t *,这与 const char * 不兼容

通过执行此操作:(LPCTSTR)path.c_str() 您将从原始字符串中获取两个字符并从中创建一个 unicode wchar_t 字母。这就是您获得“中文”字符的方式。

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

相关文章:

c++ - 指向数组参数的双指针错误

arrays - PowerShell 如何将 Get-ChildItem 输出转换为字符串数组

c++ - Arduino:字符串连接困难

c++ - 当永远不会同时访问共享托管对象时,在生产者和消费者之间使用 std::shared_ptr 是否安全?

c++ - 在 VS14 中排序不能正常工作,而在 VS10 中可以吗?

c# - 是否有可能劫持标准输出

c - OpenGL - 对 GLUT 的 undefined reference

windows - 为什么我必须使用 "rsp"来调用 C++ 函数?

windows - 如何让AppVeyor使用不同版本的Emacs?

c - 如何在C中将字符串转换为整数?