Je cherche une méthode ou un extrait de code pour convertir std :: string en LPCWSTR
Réponses
Trop de publicités?
Benny Hilfiger
Points
373
Merci pour le lien vers l'article MSDN. Ceci est exactement ce que je cherchais.
std::wstring s2ws(const std::string& s)
{
int len;
int slength = (int)s.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
std::wstring r(buf);
delete[] buf;
return r;
}
std::wstring stemp = s2ws(myString);
LPCWSTR result = stemp.c_str();
17 of 26
Points
15941
Si vous êtes dans un environnement ATL / MFC, vous pouvez utiliser la macro de conversion ATL:
#include <atlbase.h>
#include <atlconv.h>
. . .
string myStr("My string");
CA2W unicodeStr(myStr);
Vous pouvez ensuite utiliser unicodeStr en tant que LPCWSTR. La mémoire pour la chaîne unicode est créée sur la pile et libérée, puis le destructeur pour unicodeStr s'exécute.
Ed S.
Points
70246