C ++ 11UTF8のエンコードとデコード

簡単に言うと、エンコードとは、有効な情報を指定された形式に従って文字列またはバイトストリームに変換することを指し、デコードとは、文字列またはバイトストリームを指定された形式に従って有効な情報に変換することを指します。エンコードするときは、同じ形式が使用されていることを確認してください。デコード。効果的な情報を取得するため。この記事も参照できます


C ++ 11メソッド

C ++ 11は、UTF8をエンコードおよびデコードするためのstd :: wstring_convertおよびstd :: codecvt_utf8を提供します

#include <locale>
#include <codecvt>

std::string utf8_encode(const std::wstring& source)
{
    
    
	return std::wstring_convert<std::codecvt_utf8<wchar_t>>().to_bytes(source);
}

std::wstring utf8_decode(const std::string& source)
{
    
    
    return std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes(source);
}

次のように使用します。

int main()
{
    
    
    std::wstring dd = L"你好";
    std::string ddbytes = utf8_encode(dd); // 按照UTF8格式进行编码,转为常规string,即得到UTF8格式的字节流
    
	
	std::wstring ret = utf8_decode(ddbytes); // 按照UTF8格式对字节流进行解码,转为wstring
}

おすすめ

転載: blog.csdn.net/whahu1989/article/details/109731625