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/