Heim > Backend-Entwicklung > C++ > Wie kann ich einen „wstring' in C effizient in einen „string' konvertieren?

Wie kann ich einen „wstring' in C effizient in einen „string' konvertieren?

DDD
Freigeben: 2024-12-14 15:08:11
Original
699 Leute haben es durchsucht

How can I efficiently convert a `wstring` to a `string` in C  ?

Wstring in einen String in C konvertieren

Problem

Wie kann ich einen Wstring in einen String in C konvertieren? Betrachten Sie das folgende Beispiel:

#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;
    std::cout << "std::string =     " << s << std::endl;
}
Nach dem Login kopieren

Mit der auskommentierten Zeile lautet die Ausgabe:

std::string =     Hello
std::wstring =    Hello
std::string =     Hello
Nach dem Login kopieren

Ohne sie lautet die Ausgabe jedoch nur:

std::wstring =    Hello
Nach dem Login kopieren

Antwort

Mit std::wstring_convert (C 11)

Wie von Cubbi hervorgehoben, bietet std::wstring_convert eine einfache Lösung:

#include <locale>
#include <codecvt>

std::wstring string_to_convert;

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

// Convert wstring to string
std::string converted_str = converter.to_bytes(string_to_convert);
Nach dem Login kopieren

Sie können auch Hilfsfunktionen verwenden, um die Konvertierung zu vereinfachen:

// Convert string to wstring
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);
}

// Convert wstring to string
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);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich einen „wstring' in C effizient in einen „string' konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage