// LPCTSTR 정의
    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

+ Recent posts