>  기사  >  백엔드 개발  >  C 11을 사용하는 Windows에서 유니코드 UTF-8 파일을 Wstring으로 읽는 방법은 무엇입니까?

C 11을 사용하는 Windows에서 유니코드 UTF-8 파일을 Wstring으로 읽는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 05:30:02514검색

How to Read Unicode UTF-8 Files into Wstrings in Windows with C  11?

Windows에서 유니코드 UTF-8 파일을 WString으로 읽어들이기

Windows 프로그래밍 영역에서 파일에서 유니코드(UTF-8) 데이터를 Windows로 검색하는 작업은 넓은 문자열(wstring)은 C 11 표준에서 제공하는 다양한 기능을 통해 수행할 수 있습니다.

std::codecvt_utf8 패싯 활용

이 솔루션의 핵심은 std를 활용하는 것입니다. ::codecvt_utf8 패싯. 이 패싯은 UTF-8로 인코딩된 바이트 문자열과 UCS2 또는 UCS4 표현을 사용하는 문자열 사이의 브리지 역할을 합니다. 이는 텍스트 형식과 바이너리 형식을 모두 포함하는 UTF-8 파일을 읽고 쓸 수 있는 열쇠를 쥐고 있습니다.

std::locale을 사용하여 지역화된 환경 구축

패싯의 힘을 활용하려면, 로케일 객체는 일반적으로 인스턴스화됩니다. 이 개체는 문화별 정보를 특정 지역화된 환경을 공동으로 정의하는 여러 측면으로 캡슐화합니다. 일단 획득하면 스트림 버퍼에 이 로케일이 포함될 수 있습니다.

Codecvt_utf8을 사용하여 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 로캘 설정

또 다른 방법 실행 가능한 옵션에는 문자열 스트림을 사용하기 전에 전역 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.