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