Windows 프로그래밍 영역에서 파일에서 유니코드(UTF-8) 데이터를 Windows로 검색하는 작업은 넓은 문자열(wstring)은 C 11 표준에서 제공하는 다양한 기능을 통해 수행할 수 있습니다.
이 솔루션의 핵심은 std를 활용하는 것입니다. ::codecvt_utf8 패싯. 이 패싯은 UTF-8로 인코딩된 바이트 문자열과 UCS2 또는 UCS4 표현을 사용하는 문자열 사이의 브리지 역할을 합니다. 이는 텍스트 형식과 바이너리 형식을 모두 포함하는 UTF-8 파일을 읽고 쓸 수 있는 열쇠를 쥐고 있습니다.
패싯의 힘을 활용하려면, 로케일 객체는 일반적으로 인스턴스화됩니다. 이 개체는 문화별 정보를 특정 지역화된 환경을 공동으로 정의하는 여러 측면으로 캡슐화합니다. 일단 획득하면 스트림 버퍼에 이 로케일이 포함될 수 있습니다.
세심하게 제작된 예를 통해 이 접근 방식의 실제 적용을 보여줍니다.
<code class="cpp">#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(); }</code>
이 함수는 지정된 UTF-8 파일을 정상적으로 열고 해당 내용을 wstring으로 읽어온 후 결과 문자열을 반환합니다.
또 다른 방법 실행 가능한 옵션에는 문자열 스트림을 사용하기 전에 전역 C 로케일을 설정하는 것이 포함됩니다. 이 명령을 사용하면 std::locale 기본 생성자의 모든 후속 호출에서 전역 C 로케일의 복사본이 생성되므로 명시적인 스트림 버퍼 삽입이 필요하지 않습니다.
<code class="cpp">std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));</code>
이 수정을 통해 wstrings는 다음을 수행할 수 있습니다. UTF-8 파일에서 쉽게 읽을 수 있습니다.
<code class="cpp">std::wstring wstr = readFile("a.txt");</code>
앞서 언급한 기술은 Windows 환경에서 유니코드(UTF-8) 파일을 처리하는 강력하고 효율적인 수단을 제공하여 개발자가 효과적으로 파일을 읽을 수 있도록 합니다. 넓은 문자열을 조작하고 처리합니다.
위 내용은 C 11을 사용하는 Windows에서 유니코드 UTF-8 파일을 Wstring으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!