En pocas palabras, la codificación se refiere a convertir información válida en una cadena o flujo de bytes de acuerdo con un formato específico, y la decodificación se refiere a convertir una cadena o flujo de bytes en información válida de acuerdo con un formato específico. Asegúrese de que se use el mismo formato al codificar y decodificación para obtener información eficaz. También puede consultar este artículo .
Métodos de C ++ 11
C ++ 11 proporciona std :: wstring_convert y std :: codecvt_utf8 para codificar y decodificar 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);
}
Úselo de la siguiente manera,
int main()
{
std::wstring dd = L"你好";
std::string ddbytes = utf8_encode(dd); // 按照UTF8格式进行编码,转为常规string,即得到UTF8格式的字节流
std::wstring ret = utf8_decode(ddbytes); // 按照UTF8格式对字节流进行解码,转为wstring
}