Maison  >  Article  >  développement back-end  >  Comment convertir entre std :: string et LPCSTR/LPWSTR ?

Comment convertir entre std :: string et LPCSTR/LPWSTR ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 01:27:03838parcourir

How to Convert Between std::string and LPCSTR/LPWSTR?

Conversion entre std::string et LPCSTR/LPWSTR

Conversion std::string en LPCSTR

Pour convertir un std::string en LPCSTR (pointeur long vers une chaîne constante), appelez simplement la méthode c_str() sur l'objet std::string. Cela renverra un pointeur vers le tampon de chaîne interne terminé par un caractère nul.

<code class="cpp">std::string myString = "Hello World!";
const char* lpcstr = myString.c_str();</code>

Conversion de std::string en LPWSTR

Conversion d'un std::string en LPWSTR (pointeur long vers une largeur constante string) nécessite quelques étapes supplémentaires :

  1. Convertissez le std::string en wstring (chaîne large) à l'aide de la fonction de caractères multi-octets vers large MultiByteToWideChar():
<code class="cpp">int len = MultiByteToWideChar(CP_UTF8, 0, myString.c_str(), myString.size(), NULL, 0);
wstring myWstring(len, '<pre class="brush:php;toolbar:false"><code class="cpp">const wchar_t* lpwstr = myWstring.c_str();</code>
'); MultiByteToWideChar(CP_UTF8, 0, myString.c_str(), myString.size(), &myWstring[0], len);
  1. Obtenez un pointeur vers le tampon wstring interne terminé par un caractère nul :

Comprendre LPCSTR, LPSTR, LPWSTR et LPCWSTR

Les différents termes faire référence à des pointeurs vers des chaînes dans différents contextes :

  • LPSTR : Pointeur vers une chaîne de caractères à un octet
  • LPCSTR : Pointeur vers une chaîne de caractères constante d'un octet
  • LPWSTR: Pointeur vers une chaîne de caractères large (Unicode)
  • LPCWSTR: Pointeur vers un caractère large constant string (Unicode)

Le préfixe "LP" indique que le pointeur est long, mais cela n'est plus pertinent dans le développement Windows moderne.

N'oubliez pas que LPWSTR et LPCWSTR ne sont pas les même. LPCWSTR est un pointeur vers une chaîne constante, tandis que LPWSTR est un pointeur vers une chaîne modifiable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn