Windows字元編碼轉換
阿新 • • 發佈:2019-02-04
利用ATL中的字串裝換巨集,對Unicode和非Unicode編譯環境下的字元進行巨集定義封裝,可以在ANSI、Unicode以及UTF-8之間進行快速轉換。
#if (defined _UNICODE) || (defined UNICODE)
#ifndef _tstring
#define _tstring wstring
#endif
#endif
#include <atlbase.h>
#define fcA2U(ASTR) (LPSTR)ATL::CW2A((ATL::CA2W(ASTR)), CP_UTF8)
#define fcW2U(WSTR) (LPSTR)ATL::CW2A((WSTR), CP_UTF8)
#define fcU2A(USTR) (LPSTR)ATL::CW2A(ATL::CA2W((USTR), CP_UTF8))
#define fcU2W(USTR) (LPWSTR)ATL::CA2W((USTR), CP_UTF8)
#define fcA2W(ASTR) (LPWSTR)ATL::CA2W(ASTR)
#define fcW2A(WSTR) (LPSTR)ATL::CW2A(WSTR)
#define fcA2A(ASTR) (LPSTR)(ASTR)
#define fcW2W(WSTR) (LPWSTR)(WSTR)
#if (defined _UNICODE) || (defined UNICODE)
#define fcU2T fcU2W
#define fcT2U fcW2U
#define fcA2T fcA2W
#define fcT2A fcW2A
#define fcW2T fcW2W
#define fcT2W fcW2W
#else
#define fcU2T fcU2A
#define fcT2U fcA2U
#define fcA2T fcA2A
#define fcT2A fcA2A
#define fcW2T fcW2A
#define fcT2W fcA2W
#endif