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 중국어 웹사이트의 기타 관련 기사를 참조하세요!