Heim >Backend-Entwicklung >C++ >Wie kann ich einen „wstring' in C effizient in einen „string' konvertieren?
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; }
Mit der auskommentierten Zeile lautet die Ausgabe:
std::string = Hello std::wstring = Hello std::string = Hello
Ohne sie lautet die Ausgabe jedoch nur:
std::wstring = Hello
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);
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); }
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!