我可以从 LPCWSTR 转换为 LPCSTR


我必须从 LPCWSTR 转换为 LPCSTR。
我需要这个代码:

WFilePath                       path;
WIN32_FIND_DATAA                 fd;
HANDLE                          h;

	h = FindFirstFileA(path.GetString(), &fd); 

我尝试过的:

我试图在互联网上搜索但没有找到

解决方案1

也许是这样的?

C++
#include <string>

LPCSTR ToLPCSTR(LPCWSTR wstr) {
  std::wstring ws(wstr);
  return ws.c_str();
}

请注意,不可能将每个宽字符串字符都转换为 CStr,因此最终可能会导致数据丢失。

解决方案2

要么全部使用 UNICODE 或全部 ASCII,以避免此类问题。 你可以打电话 FindFirstFileW 哪一个是 UNICODE 版本,使其更简单。 一般情况下最好不要使用 A 或者 W 系统调用的后缀。 编译器将根据您的项目设置选择正确的版本。 如果您必须使用混合字符集,那么您可以使用 WideCharToMultiByte 函数(stringapiset.h) – Win32 应用程序| WideCharToMultiByte 函数(stringapiset.h) – Win32 应用程序微软学习[^] 转换 UNICODEASCII

コメント

タイトルとURLをコピーしました