반응형
C 자료형 (unsigned 생략)
char [1byte] : -128 ~ 127
short [2byte] : -32,768 ~ 32,767
int[2byte] : -32,768 ~ 32,767 : 16bit
int[4byte] : -2,147,483,648 ~ 2,147,483,647 : 32bit
long[4byte] : -2,147,483,648 ~ 2,147,483,647
float[4byte] : 3.4E +/ -38(7digite)
double[8byte] : 1.7E +/ -308(15digit)
long double[8byte] : 1.2E +/ -4392(19digits)
bool [1byte] : 1/0
Win32 자료형
BOOL[1byte] : 0/1
UCHAR[1byte] : 0 ~ 255
BYTE[1byte] : 0 ~ 255
WORD[2byte] : 0 ~ 65,535
DWORD[4byte] : 0 ~ 4,294,967,295
UINT[4byte] : 0 ~ 4,294,967,295
LONG[4byte] : -2,147,483,648 ~ 2,147,483,647
LONGLONG[8byte] : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
__int8[1byte] : -128 ~ 127
__int16[2byte] : - 32,768 ~ 32,767
__int32[4byte] : -2,147,483,648 ~ 2,147,483,647
__int64[8byte] : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
HANDLE[4byte] : -2,147,483,648 ~ 2,147,483,647
wchar_t[2byte] : unicode
OLECHAR : wchar_t
LPOLESTR : LPWSTR
LPCOLESTR : LPCWSTR
OLESTR(x) = T(x)
문자열
L : Long (16bit os 와 하위 호환으로 남겨둠.)
P : Pointer
C : Const
W : Wide(2byte)
T : 매크로 선언시 Multibyte 환경이면 1byte, Unicode 환경이면 2byte(wchar)형태로 변경함
STR : String
ex) LPSTR,LPWSTR,LPTSTR,LPCSTR,LPCWSTR..
COM
BSTR : 문자열의 길이를 문자열 시작 4byte에 기록한뒤 unicode문자열을 저장함(00 00으로 종료문자)
LPCWSTR -> BSTR : 생성안됨. 생성함수를 이용해야 함.
BSTR bstr = sysAllocString(L"TestBSTR"); // 메모리 할당
sysFreeString(bstr); // 메모리 제거
VARIANT: 문자열이 들어올때 BSTR과 동일
CRT(c runtime library)지원 스트링 클래스 (#include "comdef.h")
_bstr_t
:BSTR 랩퍼 클래스, 메모리 할당/제거를 자동으로 수행
. LPCSTR, LPCWSTR -> _bstr_t
:_bstr bstr = "hello hi";
. _bstr_t -> LPCSTR, LPCWSTR
: LPCSTR psz1 = (LPCSTR)bs1;
. _bstr_t -> BSTR
: 형변환 안됨. 함수이용
BSTR bstr = bs1.copy();
sysFreeString(bstr); // BSTR은 사용후 메모리 해제를 해야함.
4-2. _variant_t
:VARIANT 랩퍼 클래스, 메모리 할당/제거 자동 수행
. LPCSTR, LPCWSTR -> _variant_t
: _variant_t v1 = "hello hi";
. _variant_t -> _bstr_t -> LPCSTR,LPCWSTR
: LPCSTR psz1 = (LPCSTR)(_bstr_t)v1;
5. ATL 지원 스트링클래스
5-1 CComBSTR : BSTR랩퍼클래스, 메모리할당/제거 자동 수행
. LPCSTR, LPCWSTR -> CComBSTR
CComBSTR bs1 = "hello hi";
. CComBSTR -> BSTR -> LPCWSTR
BSTR bs = (BSTR)bs1;
. BSTR -> CComBSTR
CComBSTR bs2; bs2.Attach(W2BSTR(L"hello hi");
5-2 CComVariant: VARIANT랩퍼클래스, 메모리할당/제거 자동 수행
. LPCSTR, LPCWSTR -> CComVariant
CComVariant bs1 = "hello hi";
. CComVariant -> CComBSTR -> BSTR -> LPCWSTR
CComBSTR bs = bs1.bstrVal;
6. STL 스트링
6-1 string
. LPCSTR -> string
string str = "hello hi";
. string -> LPCSTR (형변환 안됨. 함수 이용)
LPCSTR psz = str.c_str();
6-2 wstring
. LPCWSTR -> wstring
wstring str = "hello hi";
. wstring -> LPCWSTR
LPCWSTR psz = str.c_str();
7. MFC 스트링
. LPCSTR, LPCWSTR -> CString
CString str = "hello hi";
. CString -> LPCTSTR
1. LPCTSTR lpsz = (LPCTSTR)str;
2. LPTSTR lptsz = str.getBuffer(0), str.ReleaseBuffer(); (올바른 사용)
3. LPTSTR lptsz = (LPTSTR)(LPCTSTR)str; (잘못된 표현)
4. CString -> BSTR
BSTR bstr = str.AllocSysString(); sysFreeString(bstr);
8. VC7 스트링
String: .Net에서 새로 정의한 스트링 클래스
String* s1 = S"hello hi";
CString s2(s1);
9. ETC
1. BSTR --> LPCSTR
USES_CONVERSION;
LPCSTR lpaszTemp = OLE2CA(bstrValue);
2. LPCSTR --> BSTR
USES_CONVERSION;
BSTR bstrTemp = ::SysAllocString(A2COLE(lpaszValue));
3. CString --> LPCSTR
1) ANSI 버전
LPCSTR lpaszTemp = (LPCSTR) strValue;
2) UNICODE 버전
USES_CONVERSION;
LPCSTR lpaszTemp = T2CA((LPCTSTR) strValue);
4. LPCSTR --> CString
1) ANSI 버전
CString strTemp = lpaszValue;
2) UNICODE 버전
USES_CONVERSION;
CString strTemp = A2CT(lpaszValue);
반응형
'프로그래밍 > C++' 카테고리의 다른 글
More Effective C++ 요약정리 (0) | 2009.11.02 |
---|---|
Effective c++ 인터넷문서 (0) | 2009.11.01 |
야구하기_c++ (0) | 2009.07.19 |
C++필기시험 (3) | 2009.07.19 |
API실습_쓰레드_Made냐옹이 (0) | 2009.07.19 |
댓글