¿Puedo convertir de LPCWSTR a LPCSTR?

programación


Debo convertir de LPCWSTR a LPCSTR.
Lo necesito para este código:

WFilePath                       path;
WIN32_FIND_DATAA                 fd;
HANDLE                          h;

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

Lo que he probado:

Intenté buscar en internet pero no encuentro

Solución 1

¿Algo como esto quizás?

C++
#include <string>

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

Tenga en cuenta que no es posible convertir todos los caracteres de cadena ancha a un CStr, por lo que puede terminar con una pérdida de datos.

Solución 2

O usar todos UNICODE o todos ASCII, para evitar este tipo de problemas. Y puedes llamar FindFirstFileW Cuál es el UNICODE versión, para hacerlo más sencillo. Generalmente es mejor no utilizar el A o W sufijos en llamadas al sistema. El compilador elegirá la versión correcta según la configuración de su proyecto. Si debe utilizar conjuntos de caracteres mixtos, puede utilizar el Función WideCharToMultiByte (stringapiset.h) – Aplicaciones Win32 | Microsoft aprende[^] para convertir UNICODE a ASCII.

コメント

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