Menukar std::string kepada LPCSTR dan LPWSTR
Menukar std::string kepada LPCSTR (penunjuk panjang kepada rentetan malar) adalah proses yang agak mudah. Anda boleh melakukan ini dengan memanggil kaedah c_str() pada objek std::string, yang mengembalikan nilai const char * yang kemudiannya anda boleh berikan kepada LPCSTR.
Walau bagaimanapun, keadaan menjadi lebih rumit apabila menukar std::string kepada LPWSTR, iaitu penunjuk panjang kepada rentetan Unicode (lebar). Untuk melakukan ini, anda perlu menggunakan kelas _bstr_t, iaitu kelas templat yang boleh digunakan untuk menukar antara jenis rentetan yang berbeza.
Berikut ialah contoh cara anda boleh menukar std::string ke LPWSTR menggunakan kelas _bstr_t:
#include <string> #include <comdef.h> int main() { std::string str = "Hello world"; _bstr_t bstr(str.c_str()); // Now you have an LPWSTR that you can use. LPWSTR wide_str = bstr.GetBSTR(); return 0; }
Memahami LPSTR, LPCSTR, LPWSTR dan LPCWSTR
Nama jenis rentetan yang berbeza ini boleh mengelirukan, tetapi jika anda memecahkannya, ia menjadi lebih mudah untuk difahami.
Seperti yang anda lihat, satu-satunya perbezaan antara jenis ini ialah sama ada ia adalah penunjuk kepada rentetan malar atau tidak. Anda boleh mengabaikan bahagian L (panjang) nama -- ia adalah penahanan daripada Windows 16-bit.
Atas ialah kandungan terperinci Bagaimana untuk menukar std::string kepada LPCSTR dan LPWSTR?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!