The Pursuit of Happyness

예전부터 C에서 사용하는 데이터형에 대해서 의문이 많았는데,

다른 사람이 블로그에 정리한 내용을 보고 내용이 명확해 진거 같아서 정리를 해보겠습니다..


원래 C와 C++ 에는 string 이라는 자료형이 없기 때문에,

문자열을 표현하기 위해서는 char * 형을 쓰는 것이 일반적인데,

유니코드나 utf 형식의 인코딩이 등장하며 이러한 문자열의 표현이 더욱 복잡해 지고 있습니다.


일단 위의 자료형들을 이해하기 위해서는 기본 자료형에 대해 이해를 하고 잘 끊어 읽으시면 됩니다.

먼저 기본 자료형을 살펴보면,

LP : long pointer
C : constant
STR : string
TSTR : tstring
WSTR : wstring

LP는 long pointer 를 뜻하는데, 너무 어렵게 생각하지 말고 그냥 포인터라고 생각합시다.
(컴파일러의 버전에 따라 포인터가 가리키는 데이터형이 16bits 에서 64bits 까지 왔다갔다 하지만 그냥 포인터로 생각..)

C는 constant 를 의미하며, 함수의 내부에서 인자값을 변경하지 않는다는 것이고요,

STR은 string 으로써 끝에 null 값으로 종료하는 char형 배열을 의미합니다.

위의 내용을 바탕으로 위의 자료형들을 해석해 보면,

LPSTR = long pointer string = char *
LPCSTR = long pointer constant string = const char *

그러면 과연 wstring 과 tstring 은 무엇인가 하는 것인데..

wstring 은 대충 봐도 알겠지만, wide char * 입니다.

유니코드 문자들을 표시하기 위한 데이터 타입이라고 생각하면 되고요,

마지막으로 tstring 은 무엇이냐 하면, 매크로입니다.

컴파일러에 따라 char *혹은 wchar * 로 맵핑해주는 매크로.


위의 설명은 대략 개념을 잡기 위한 것들이고,

실제로 프로그래밍 할 때에는 LPSTR 과 char * 가 완전히 같은 것은 아니기 때문에 형변환이 필요할 때에는 캐스팅을 해서 사용을 해야합니다.

그럼~

Comment +0