Maison > développement back-end > C++ > Comment puis-je convertir efficacement une « wstring » en une « string » en C ?

Comment puis-je convertir efficacement une « wstring » en une « string » en C ?

DDD
Libérer: 2024-12-14 15:08:11
original
784 Les gens l'ont consulté

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

Conversion d'une chaîne en chaîne en C

Problème

Comment puis-je convertir une chaîne en chaîne en C ? Prenons l'exemple suivant :

#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;
}
Copier après la connexion

Avec la ligne commentée, le résultat est :

std::string =     Hello
std::wstring =    Hello
std::string =     Hello
Copier après la connexion

Cependant, sans cela, le résultat est uniquement :

std::wstring =    Hello
Copier après la connexion

Réponse

En utilisant std::wstring_convert (C 11)

Comme l'a souligné Cubbi, std::wstring_convert fournit une solution simple :

#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);
Copier après la connexion

Vous pouvez également utiliser des fonctions d'assistance pour simplifier la conversion :

// 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);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal