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

Bagaimana dengan Cekap Menukar `wstring` kepada `string` dalam C?

Susan Sarandon
Lepaskan: 2024-12-27 05:08:11
asal
423 orang telah melayarinya

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

Menukar wstring kepada rentetan

Masalah:
Bagaimana cara menukar rentetan wstring kepada rentetan dalam C ?

Konteks:
Dalam C , wstring dan rentetan mewakili rentetan aksara lebar dan rentetan aksara sempit, masing-masing. Penukaran antara dua jenis ini mungkin diperlukan dalam pelbagai senario.

Percubaan Asal:

#include <string>
#include <iostream>

int main() {
    std::wstring ws = L"Hello";
    std::string s(ws.begin(), ws.end());
    std::cout << "std::string =     " << s << std::endl;
    std::wcout << "std::wstring =    " << ws << std::endl;
}
Salin selepas log masuk

Isu:
Contoh yang disediakan hanya mengeluarkan nilai wstring awal, bukan rentetan penukaran.

Penyelesaian menggunakan std::wstring_convert:
C 11 memperkenalkan std::wstring_convert, yang memudahkan proses penukaran:

#include <locale>
#include <codecvt>

int main() {
    std::wstring ws = L"Hello";

    // Setup converter
    using convert_type = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_type, wchar_t> converter;

    // Convert wstring to string
    std::string s = converter.to_bytes(ws);

    std::cout << "std::string =     " << s << std::endl;
    std::wcout << "std::wstring =    " << ws << std::endl;
}
Salin selepas log masuk

Satu pelapik Penyelesaian:

std::wstring str = std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes("some string");
Salin selepas log masuk

Penyelesaian Fungsi Pembungkus:

std::wstring s2ws(const std::string& str) {
    using convert_typeX = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_typeX, wchar_t> converterX;

    return converterX.from_bytes(str);
}

std::string ws2s(const std::wstring& wstr) {
    using convert_typeX = std::codecvt_utf8<wchar_t>;
    std::wstring_convert<convert_typeX, wchar_t> converterX;

    return converterX.to_bytes(wstr);
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar `wstring` kepada `string` 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan