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

Comment convertir std::string en LPCSTR et LPWSTR en C ?

DDD
DDDoriginal
2024-11-04 01:56:30295parcourir

How to Convert std::string to LPCSTR and LPWSTR in C  ?

Conversion std::string en LPCSTR et LPWSTR

En C , il est parfois nécessaire de convertir un std::string en LPCSTR ou LPWSTR à utiliser avec certaines API. Ceci peut être réalisé en utilisant la méthode c_str().

Conversion en LPCSTR

Pour convertir une std::string en LPCSTR (un pointeur vers une constante terminée par un zéro tableau de caractères), utilisez simplement la méthode c_str() :

<code class="cpp">std::string str = "Hello, world!";
LPCSTR lpcstr = str.c_str();</code>

Conversion en LPWSTR

Conversion en LPWSTR (un pointeur vers un tableau de caractères larges constant) est légèrement plus complexe car il nécessite l'utilisation du type WCHAR :

<code class="cpp">std::string str = "Hello, world!";
size_t length = str.length();
WCHAR* buffer = new WCHAR[length + 1];
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, buffer, (int)length);
LPWSTR lpwstr = buffer;</code>

Comprendre LPCSTR, LPSTR, LPWSTR et LPCWSTR

Ces acronymes signifient :

  • LPCSTR : Pointeur long vers STRing constant (un pointeur vers un tableau de caractères constant)
  • LPSTR : Pointeur long vers STRing (un pointeur vers un tableau de caractères)
  • LPWSTR : Pointeur long vers Wide STRing (un pointeur vers un tableau de caractères larges)
  • LPCWSTR : Pointeur long vers une STRing large constante (un pointeur vers un tableau de caractères larges constant)

Dans En général, LPCSTR et LPCWSTR sont utilisés avec des chaînes constantes, tandis que LPSTR et LPWSTR sont utilisés avec des chaînes mutables. Notez que le « L » dans ces noms est un héritage de Windows 16 bits et peut être ignoré.

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