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

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

DDD
풀어 주다: 2024-12-17 18:50:15
원래의
892명이 탐색했습니다.

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

C에서 wstring을 문자열로 효율적으로 변환하는 방법

C에서 wstring을 문자열로 변환하는 것은 국제화 또는 광범위한 작업을 수행할 때 필수적일 수 있습니다. 문자 데이터. 이 가이드에서는 이 변환을 효과적으로 수행하기 위한 여러 기술을 살펴보겠습니다.

방법 1: std::wstring_convert

C 11에 도입된 std::wstring_convert는 간단하고 wstring과 string 사이를 변환하는 효율적인 방법입니다. 적절한 codecvt 패싯을 사용하여 변환을 처리합니다.

#include <locale>
#include <codecvt>

// Unicode UTF-8 codecvt
std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;

// Conversion
std::wstring wstr = L"Hello";
std::string str = converter.to_bytes(wstr);
로그인 후 복사

방법 2: std::string 생성자 오버로딩

C 11에서는 std::에 대한 생성자를 도입했습니다. 문자 배열에 대한 포인터를 받아들이는 문자열입니다. 이는 넓은 문자를 좁은 문자로 변환하여 wstring을 문자열로 변환하는 데 사용할 수 있습니다.

#include <string>

// Convert wchar_t to char using wcstombs
std::wstring wstr = L"Hello";
const wchar_t* wchar_ptr = wstr.c_str();

char* char_ptr;
size_t char_size = wcstombs(nullptr, wchar_ptr, 0);
char_ptr = new char[char_size + 1];
wcstombs(char_ptr, wchar_ptr, char_size + 1);

// Construct std::string from char array
std::string str(char_ptr);
로그인 후 복사

방법 3: std::stringstream

그렇지는 않지만 권장 사항은 std::stringstream을 사용하여 wstring을 문자열로 변환할 수 있지만 wstringstream을 문자열로 변환하려면 추가 단계가 필요합니다. string.

#include <sstream>

std::wstring wstr = L"Hello";
std::wstringstream wss(wstr);

// Extract std::string from std::wstringstream
std::string str;
wss >> str;
로그인 후 복사

결론

std::wstring_convert 및 std::string 생성자 오버로드는 wstring을 문자열로 변환하는 효율적이고 직접적인 방법을 제공합니다. std::stringstream을 사용할 수는 있지만 덜 최적입니다. 변환 방법의 선택은 구현의 특정 요구 사항 및 기본 설정에 따라 다릅니다.

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

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