Windows에서 Wstring에 UTF-8 콘텐츠 로드
Windows 플랫폼에서 유니코드(UTF-8) 파일을 wstring으로 읽으려면 다음을 주의 깊게 처리해야 합니다. 텍스트 데이터의 적절한 해석을 보장하는 문자 인코딩.
C 11의 출현으로 std::codecvt_utf8 패싯은 UTF-8로 인코딩된 바이트 문자열을 UCS2 또는 UCS4 문자열로 변환하기 위한 강력한 솔루션을 제공합니다. 이 패싯은 UTF-8 파일의 읽기 및 쓰기를 모두 용이하게 할 수 있습니다.
std::codecvt_utf8 패싯 사용
std::codecvt_utf8 패싯을 효과적으로 사용하려면 다음 단계가 포함됩니다.
이 접근 방식의 구현 예는 다음과 같습니다.
#include <sstream> #include <fstream> #include <codecvt> std::wstring readFile(const char* filename) { std::wifstream wif(filename); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>)); std::wstringstream wss; wss << wif.rdbuf(); return wss.str(); }
이 함수 UTF-8 콘텐츠를 wstring 변수에 편리하게 로드하는 데 활용할 수 있습니다.
대안: 전역 C 로캘 설정
또는 전역 C를 설정할 수도 있습니다. 문자열 스트림으로 작업하기 전에 로케일을 UTF-8로 설정하세요. 이렇게 하면 스트림 버퍼를 수동으로 추가할 필요가 없습니다.
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
이 접근 방식을 사용하면 모든 후속 표준 로케일 생성자가 수정된 전역 C 로케일의 복사본을 반환하므로 UTF-8 인코딩을 자동으로 처리할 수 있습니다.
위 내용은 Windows에서 UTF-8 콘텐츠를 Wstrings에 로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!