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

DDD
Lepaskan: 2024-11-04 01:56:30
asal
292 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!