문자열을 다루는 Data Type

가장 최근 포스팅은 작년 이맘때였다….
취업을 하고 1년간 정신없어 바빴기에 (일도 하고 술도 먹고ㅎㅎ)
약 1년간 새로운 포스트를 올리지 못했다….

다음 달 첫째 주엔 근로자의 날, 어린이날 등 공휴일이 많으니
그동안 못 올렸던 내용들과 올리고 싶었던 내용들을 올리리라 다짐해본다….

이번 포스팅의 주제는 문자열을 다루는 Data Type 들에 대해서 정리를 해보았다.

요즘은 MFC 프로젝트를 자주 다루고 있는데
C++ 표준 라이브러리에서 제공하는 Data Type과
Windows API에서 제공하는 Data Type 들이
혼용되다 보니 헷갈려서 나름대로 정리가 필요하다고 느껴졌다.

Data Type 적합한 취급방식 구성 인코딩 방식 라이브러리 제공 비고
char ASCII, Multi Byte   유동적으로 C++ 표준  
char8_t ASCII, Multi Byte   UTF-8 C++ 표준  
char16_t Unicode     C++ 표준  
char32_t Unicode     C++ 표준  
wchar_t Unicode     C++ 표준  
           
string ASCII, Multi Byte char ASCII, CP949, UTF-8 C++ 표준  
u8string ASCII, Multi Byte, Unicode char UTF-8 C++ 표준  
u16string Unicode char16_t UTF-16 C++ 표준  
u32string Unicode char32_t UTF-32 C++ 표준  
wstring Unicode wchar_t UTF-16, UTF-32 C++ 표준  
basic_string<TCHAR> ASCII, Multi Byte, Unicode string or wstring 유동적으로 C++ 표준  
           
Cstring Unicode wchar_t   Windows API  
CStringA Multi Byte char ANSI Windows API  
           
LPSTR ASCII, Multi Byte char* ANSI Windows API  
LPCSTR ASCII, Multi Byte const char* ANSI Windows API  
LPWSTR Unicode wchar_t* UTF-16, UCS-2 Windows API  
LPTSTR ASCII, Multi Byte, Unicode LPSTR or LPWSTR 유동적으로 Windows API 조건부컴파일
LPCTSTR ASCII, Multi Byte, Unicode const TCHAR* 유동적으로 Windows API 조건부컴파일
LPWTSTR ASCII, Multi Byte, Unicode TCHAR* 유동적으로 Windows API 조건부컴파일
           
LPWCH Unicode WCHAR* UTF-16, UTF-32 Windows API  
LPCWCH Unicode const WCHAR* UTF-16, UTF-32 Windows API  
BSTR Unicode wchar_t UTF-16 Windows API  
           
CHAR ASCII, Multi Byte char ANSI Windows API  
TCHAR Multi Byte, Unicode wchar_t or char 유동적으로 Windows API 조건부컴파일
WCHAR Unicode   UTF-16 Windows API wchar_t 와 동일

우선 정리한 내용은 위와 같고…. 충분히 틀린 내용이 있을 수도 있다.
잘못된 내용이 있거나 추가할 내용이 있다면 추후에 포스트를 수정할 예정이다.

※ Unicode = W (wide)
※ MBCS (Multi Byte Character Set) = A (ansi)

댓글남기기