> 백엔드 개발 > C++ > C에서 `wstring`을 `string`으로 효율적으로 변환하는 방법은 무엇입니까?

C에서 `wstring`을 `string`으로 효율적으로 변환하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-27 05:08:11
원래의
420명이 탐색했습니다.

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

wstring을 문자열로 변환

문제:
C에서 wstring을 문자열로 효과적으로 변환하는 방법은 무엇입니까?

컨텍스트:
C에서는 wstring 및 string은 각각 넓은 문자 및 좁은 문자열을 나타냅니다. 다양한 시나리오에서 이 두 유형 간의 변환이 필요할 수 있습니다.

원래 시도:

#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;
}
로그인 후 복사

문제:
제공된 예 문자열이 아닌 초기 wstring 값만 출력합니다. 변환.

std::wstring_convert를 사용하는 솔루션:
C 11에서는 변환 프로세스를 단순화하는 std::wstring_convert를 도입했습니다.

#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;
}
로그인 후 복사

한 줄짜리 솔루션:

std::wstring str = std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes("some string");
로그인 후 복사

래퍼 기능 솔루션:

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);
}
로그인 후 복사

위 내용은 C에서 `wstring`을 `string`으로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿