Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan Cekap Menukar Rentetan C (atau tatasusunan char) kepada wstring (atau tatasusunan wchar_t)?

Bagaimana dengan Cekap Menukar Rentetan C (atau tatasusunan char) kepada wstring (atau tatasusunan wchar_t)?

Linda Hamilton
Lepaskan: 2024-12-26 02:12:09
asal
768 orang telah melayarinya

How to Efficiently Convert a C   String (or char array) to a wstring (or wchar_t array)?

C Tukar rentetan (atau char) kepada wstring (atau wchar_t)

Soalan:

Diberi rentetan s yang diwakili sebagai tatasusunan aksara dan wstring ws, bagaimanakah anda menukar kandungan s kepada ws dengan cekap tanpa memutarbelitkan kandungan asal?

Jawapan:

Untuk menangani isu ini, perpustakaan standard (C 11 ) menyediakan sokongan menyeluruh untuk menukar antara pengekodan aksara yang berbeza, termasuk UTF-8 dan UTF-16. Berikut ialah penyelesaian yang mantap menggunakan perpustakaan standard:

#include <locale>
#include <codecvt>
#include <string>

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
// Convert string to wstring
std::wstring ws = converter.from_bytes(s);
Salin selepas log masuk

Nota Tambahan:

  • Penukar codecvt_utf8_utf16 mengendalikan penukaran antara UTF-8 (digunakan dalam rentetan input s) dan UTF-16 (digunakan dalam rentetan w keluaran ws).
  • Kelas wstring_convert menyediakan cara yang mudah dan cekap untuk melaksanakan penukaran ini.
  • Dalam C 17 dan kemudian, pengepala codecvt telah ditamatkan dan memihak kepada perpustakaan std::charconv . Walau bagaimanapun, penyelesaian yang dikemukakan di sini harus terus berfungsi untuk masa hadapan yang boleh dijangka.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Rentetan C (atau tatasusunan char) kepada wstring (atau tatasusunan wchar_t)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan