>백엔드 개발 >C++ >C에서 `wstring`을 `string`으로 효율적으로 변환하려면 어떻게 해야 합니까?

C에서 `wstring`을 `string`으로 효율적으로 변환하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-14 15:08:11700검색

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

C에서 wstring을 문자열로 변환

문제

C에서 wstring을 문자열로 변환하려면 어떻게 해야 합니까? 다음 예를 고려하십시오.

#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;
}

주석 처리된 줄을 사용하면 출력은 다음과 같습니다.

std::string =     Hello
std::wstring =    Hello
std::string =     Hello

그러나 주석 처리가 없으면 출력은 다음과 같습니다.

std::wstring =    Hello

답변

std::wstring_convert(C 11)

Cubbi가 지적한 대로 std::wstring_convert는 쉬운 솔루션을 제공합니다.

#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);

도우미 기능을 사용하여 변환을 단순화할 수도 있습니다.

// 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);
}

위 내용은 C에서 `wstring`을 `string`으로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.