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
730 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!

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