Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar std::string kepada LPCSTR dan LPWSTR dalam C ?

Bagaimana untuk Menukar std::string kepada LPCSTR dan LPWSTR dalam C ?

DDD
DDDasal
2024-11-04 01:56:30295semak imbas

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

Menukar std::string kepada LPCSTR dan LPWSTR

Dalam C , kadangkala perlu menukar std::string kepada LPCSTR atau LPWSTR untuk digunakan dengan API tertentu. Ini boleh dicapai menggunakan kaedah c_str().

Menukar kepada LPCSTR

Untuk menukar std::string kepada LPCSTR (penunjuk kepada pemalar yang ditamatkan nol tatasusunan aksara), hanya gunakan kaedah c_str():

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

Menukar kepada LPWSTR

Menukar kepada LPWSTR (penunjuk kepada tatasusunan aksara lebar yang berterusan) adalah lebih kompleks sedikit kerana ia memerlukan penggunaan jenis 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>

Memahami LPCSTR, LPSTR, LPWSTR dan LPCWSTR

Akronim ini bermaksud:

  • LPCSTR: Penunjuk Panjang kepada STRing Malar (penunjuk kepada tatasusunan aksara malar)
  • LPSTR: Penunjuk Panjang kepada STRing (penunjuk kepada tatasusunan aksara)
  • LPWSTR: Penunjuk Panjang kepada STRing Lebar (penunjuk kepada tatasusunan aksara lebar)
  • LPCWSTR: Penunjuk Panjang kepada STring Lebar Malar (penunjuk kepada tatasusunan aksara lebar yang berterusan)

Dalam am, LPCSTR dan LPCWSTR digunakan dengan rentetan malar, manakala LPSTR dan LPWSTR digunakan dengan rentetan boleh ubah. Ambil perhatian bahawa "L" dalam nama ini adalah warisan daripada Windows 16-bit dan boleh diabaikan.

Atas ialah kandungan terperinci Bagaimana untuk Menukar std::string kepada LPCSTR dan LPWSTR dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn