[C++/Windows] wstring/UTF16でエンコードされたファイルを読み込む

wstring の場合

#include <codecvt>
#include <iostream>
#include <locale>
#include <fstream>

int main()
{
    std::basic_ifstream<wchar_t> ifs("C:\\hoge1.txt", std::ios::binary);
    ifs.imbue(std::locale(
        ifs.getloc(), 
        new std::codecvt_utf16<wchar_t, 0x10ffff, std::codecvt_mode( std::little_endian |std::consume_header)>));

    std::vector<wchar_t> buf(100);
    ifs.read(buf.data(), 100);
    std::basic_string<wchar_t> istr(buf.data());
}

UTF16の場合

#include <codecvt>
#include <iostream>
#include <locale>
#include <fstream>

int main()
{
    std::basic_ifstream<uint16_t> ifs("C:\\hoge1.txt", std::ios::binary);
    ifs.imbue(std::locale(
        ifs.getloc(), 
        new std::codecvt_utf16<uint16_t, 0x10ffff, std::codecvt_mode( std::little_endian |std::consume_header)>));

    std::vector<uint16_t> buf(100);
    ifs.read(buf.data(), 100);
    std::basic_string<uint16_t> istr(buf.data());
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です