Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Rentetan C kepada Rentetan Lebar dengan Boleh Dipercayai?

Bagaimanakah Saya Boleh Menukar Rentetan C kepada Rentetan Lebar dengan Boleh Dipercayai?

Barbara Streisand
Barbara Streisandasal
2024-12-22 12:34:10438semak imbas

How Can I Reliably Convert a C   String to a Wide String?

Menukar Rentetan kepada Rentetan W dalam C

Soalan anda melibatkan penukaran rentetan s kepada rentetan lebar ws dalam C . Walaupun sesetengah kaedah tidak dapat mengekalkan kandungan asal sepenuhnya, terdapat penyelesaian yang berkesan menggunakan komponen perpustakaan standard.

Penerangan Masalah

Memandangkan rentetan s, anda mahu tetapkan kandungannya kepada wstring ws. Walau bagaimanapun, percubaan sebelum ini telah mengakibatkan penukaran yang herot atau tidak tepat.

Penyelesaian: Penukaran Perpustakaan Standard

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

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring ws = converter.from_bytes(s);

Penjelasan

Kod ini menggunakan fungsi perpustakaan standard untuk melaksanakan penukaran.

  • std::wstring_convert: Objek penukar yang menyediakan kaedah from_bytes() untuk menukar rentetan aksara kepada rentetan w.
  • std::codecvt_utf8_utf16: A penukar pengekodan aksara yang menukar antara UTF-8 dan UTF-16 pengekodan.

Dengan menggunakan penukaran pengekodan ini, aksara Unikod asal dalam s dikekalkan dengan tepat dalam ws.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan C kepada Rentetan Lebar dengan Boleh Dipercayai?. 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