char buf[] = "1234";
// LPCTSTR -> CString
CString s(buf);
// CString -> BSTR
BSTR bstr = s.AllocSysString();
SysFreeString( bstr ); <-- 반드시 해주어야 한다.
// "1234" -> BSTR
BSTR bstr = L"1234";
SysFreeString( bstr ); <-- 반드시 해주어야 한다.
// BSTR -> CString
▶ CString -> BYTE
BYTE* temp;
CString cmd;
에서 cmd 의 값을 temp에 할당하려 할때.
temp=new BYTE[255];
temp=(LPBYTE)(LPCSTR)cmd;
delete []temp;
or
CString str = _T("abcd");
BYTE* pbyte = new BYTE[256];
int nSize;
nSize = str.GetLength();
CopyMemory( pbyte, str.GetBuffer(nSize), nSize );
pbyte[nSize] = 0;
or
strcpy(szNamePlace,(LPCTSTR)name);
or
CString str = "string";
BYTE* pByte;
pByte = (BYTE*)(LPTSTR)(LPCTSTR)str;
▶ BYTE -> CString
CString testString;
BYTE testByte;
testString.Format( "%s", testByte );
▶ CString -> BYTE *
CString name = "몽룡이";
BYTE byte[26] = {0};
BYTE bName[26] = {0x0,};
sprintf((char*)byte, "%s", name);
memcpy(bName, byte, 26);
CString strTmp1, strTmp2;
strTmp1 = "";
strTmp2 = "";
for(int i=0; i<26; i++) {
strTmp1.Format("%02X ", bName[i]);
strTmp2 += strTmp1;
}
MessageBox(strTmp2, "", 0);
26바이트의 크기의 이름이다. 남는 공간은 0으로 채워진다
▶ CString -> int
CString의 문자열을 바로 숫자로 바꾸는것은
아직 보지 못했습니다.
아마 atoi()나 atod()의 C함수를 사용해야 될것 같네요.
도움말을 참고하세요.
▶ int -> CString
CString str;
int i = 6;
str.Format("%d",i); // str에 6의 문자가 들어갑니다.
▶ BYTE -> int, int -> BYTE
바로 형변환으로 가능합니다.
bt = (BYTE)i; // 주의 : 작은 크기로 들어가기 때문에
// 255 이상의 값은 엉뚱하게 동작하겠지요.
i = (int)bt;
▶ CString => char* 변환
char * ch;
CString *str;
1) ch = (LPSTR)(LPCSTR)str;
2) ch = str.GetBuffer(str.GetLength());
3) wsprintf( ch, "%s", str);
▶ char* => CString 변환
1) str = (LPCSTR)(LPSTR)ch;
2) str = ch;
참고)
LPSTR 은 char* 입니다.
LPSTR : char stirng의 32비트 포인터, char* 와 같다.
LPCTSTR : Constant character String의 32비트 포인터
UINT : 32비트 unsigned형 정수
DWORD : unsigned long int형
BYTE : 8비트 unsigned 정수
1.CString 클래스의 GetBuffer()는 CString을 char *로 바꿔줍니다.
ex) CString strTemp = _T("test");
char *getTemp=NULL;
getTemp = malloc(strTemp.GetLength()+1);
strcpy(getTemp, strTemp.GetBuffer(strTemp.GetLength());
printf("결과:%sn", getTemp);
free(getTemp);
2. operator LPCTSTR ()도 마찬가지입니다.
ex) CString strTemp = _T("test");
char *getTemp = (LPSTR)(LPCSTR)strData;
CString -> BYTE*
CString str="1234";
BYTE *pbyte;
pbyte = (BYTE(LPSTR)(LPCSTR)str;
CString str = _T("abcd");
BYTE* pbyte = new BYTE[256];
int nSize;
nSize = str.GetLength();
CopyMemory( pbyte, str.GetBuffer(nSize), nSize );
pbyte[nSize] = 0;
CString => char* 변환
char * ch;
CString *str;
1) ch = (LPSTR)(LPCSTR)str;
2) ch = str.GetBuffer(str.GetLength());
3) wsprintf( ch, "%s", str);
char* => CString 변환
1) str = (LPCSTR)(LPSTR)ch;
2) str = ch;
참고)
LPSTR 은 char* 입니다.
LPSTR : char stirng의 32비트 포인터, char* 와 같다.
LPCTSTR : Constant character String의 32비트 포인터
UINT : 32비트 unsigned형 정수
DWORD : unsigned long int형
BYTE : 8비트 unsigned 정수
참고 : CString을 const char* 형태로 변경 -> (LPTSTR)(LPCTSTR)CString
LPCSTR : A 32-bit pointer to a constant character string.
LPSTR : A 32-bit pointer to a character string.
LPCTSTR : A 32-bit pointer to a constant character string that is portable for Unicode and DBCS.
LPTSTR : A 32-bit pointer to a character string that is portable for Unicode and DBCS.
출처 : http://tong.nate.com/redyoon/34780867
'etc > old' 카테고리의 다른 글
ニッシンのSEAFOOD NOODLEは おいしいですよ。 (0) | 2008.05.28 |
---|---|
mysql에서 쿼리 사용방법 (0) | 2008.05.28 |
携帯電話は必要悪(ひつようあく)だ (0) | 2008.05.27 |
FlashExternalInterface.cpp (0) | 2008.05.26 |
Blaze DS 설치 (0) | 2008.05.26 |