Puis-je convertir de LPCWSTR en LPCSTR

la programmation


Je dois convertir de LPCWSTR en LPCSTR.
J’en ai besoin pour ce code :

WFilePath                       path;
WIN32_FIND_DATAA                 fd;
HANDLE                          h;

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

Ce que j’ai essayé :

J’ai essayé de chercher sur internet mais je ne trouve pas

Solution 1

Quelque chose comme ça peut-être ?

C++
#include <string>

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

Sachez qu’il n’est pas possible de convertir tous les caractères de chaîne large en CStr, vous risquez donc de vous retrouver avec une perte de données.

Solution 2

Soit utiliser tout UNICODE ou tout ASCII, pour éviter de tels problèmes. Et tu peux appeler FindFirstFileW qui est le UNICODE version, pour faire plus simple. Il est généralement préférable de ne pas utiliser le A ou W suffixes sur les appels système. Le compilateur choisira la version correcte en fonction des paramètres de votre projet. Si vous devez utiliser des jeux de caractères mixtes, vous pouvez utiliser le Fonction WideCharToMultiByte (stringapiset.h) – Applications Win32 | Microsoft Apprendre[^] convertir UNICODE à ASCII.

コメント

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