首頁 >後端開發 >C++ >如何使用 C 11 在 Windows 上將 Unicode (UTF-8) 檔案讀入 wstring?

如何使用 C 11 在 Windows 上將 Unicode (UTF-8) 檔案讀入 wstring?

Patricia Arquette
Patricia Arquette原創
2024-11-06 07:26:02985瀏覽

How to Read Unicode (UTF-8) Files into wstrings on Windows with C  11?

在Windows 上將Unicode UTF-8 檔案讀入Wstring

在Windows 上將Unicode (UTF-8) 檔案讀入wstring可以使用C 11 的std::codecvt_utf8 方面可以有效實現。

使用 std::codecvt_utf8,可以簡化 UTF-8 位元組字串與 UCS2 或 UCS4 字串之間的轉換。此構面支援讀取和寫入 UTF-8 檔案(文字和二進位)。

要利用該構面,請建立一個區域設定對象,該物件封裝定義所需局部化環境的構面。建立語言環境物件後,將其註入流緩衝區。

這是使用注入的實現:

#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();
}

注入流緩衝區後,將文件讀入wstring 非常簡單:

std::wstring wstr = readFile("a.txt");

或者,在使用字符串流之前設定全域C 語言環境將消除明確注入的需要:

std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));

這會將全域語言環境設定為預設值,這將自動適用於未來的串流緩衝區。

以上是如何使用 C 11 在 Windows 上將 Unicode (UTF-8) 檔案讀入 wstring?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn