Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan Cekap Menukar wstring kepada rentetan dalam C?

Bagaimana dengan Cekap Menukar wstring kepada rentetan dalam C?

DDD
Lepaskan: 2024-12-17 18:50:15
asal
961 orang telah melayarinya

How to Efficiently Convert a wstring to a string in C  ?

Cara Menukar wstring kepada rentetan dalam C dengan Cekap

Menukar wstring kepada rentetan dalam C boleh menjadi penting apabila bekerja dengan antarabangsa atau luas data aksara. Panduan ini akan meneroka beberapa teknik untuk melaksanakan penukaran ini dengan berkesan.

Kaedah 1: std::wstring_convert

Diperkenalkan dalam C 11, std::wstring_convert menyediakan mudah dan cara yang cekap untuk menukar antara wstring dan string. Ia menggunakan aspek codecvt yang sesuai untuk mengendalikan penukaran.

#include <locale>
#include <codecvt>

// Unicode UTF-8 codecvt
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;

// Conversion
std::wstring wstr = L"Hello";
std::string str = converter.to_bytes(wstr);
Salin selepas log masuk

Kaedah 2: std::string Pembebanan Pembina

C 11 memperkenalkan pembina untuk std:: rentetan yang menerima penunjuk kepada tatasusunan aksara. Ini boleh digunakan untuk menukar rentetan w kepada rentetan dengan menukar aksara lebar kepada aksara sempit.

#include <string>

// Convert wchar_t to char using wcstombs
std::wstring wstr = L"Hello";
const wchar_t* wchar_ptr = wstr.c_str();

char* char_ptr;
size_t char_size = wcstombs(nullptr, wchar_ptr, 0);
char_ptr = new char[char_size + 1];
wcstombs(char_ptr, wchar_ptr, char_size + 1);

// Construct std::string from char array
std::string str(char_ptr);
Salin selepas log masuk

Kaedah 3: std::stringstream

Walaupun tidak disyorkan, std::stringstream boleh digunakan untuk menukar wstring kepada rentetan, tetapi ia memerlukan langkah tambahan untuk menukar wstringstream ke rentetan.

#include <sstream>

std::wstring wstr = L"Hello";
std::wstringstream wss(wstr);

// Extract std::string from std::wstringstream
std::string str;
wss >> str;
Salin selepas log masuk

Kesimpulan

std::wstring_convert dan std::string constructor overloading menyediakan kaedah yang cekap dan langsung untuk menukar wstring kepada rentetan. Walaupun std::stringstream boleh digunakan, ia adalah kurang optimum. Pilihan kaedah penukaran bergantung pada keperluan khusus dan keutamaan pelaksanaan.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar wstring kepada rentetan 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