MFC, CString to Char* (문자열 변환)

MFC, CString to Char* (문자열 변환)


MFC CString


LPSTR은 char * 형입니다.

해보면 알겠지만 char *형을 CString 형에다 넣으면 들어갑니다. 그러나 반대로는 에러가 납니다.


1. 이 경우에는 에러가 없습니다.


1
2
char a[100= {"하하"};
CString b = a;
cs


2. 이 경우에는 에러가 납니다.


1
2
3
CString b = "하하";
char a[100];
= b;
cs


문제 해결방법은 여러가지가 있습니다.

하지만, 이렇게 strcpy를 써서 char* 형인 a변수로 "하하"를 옮긴 다음에 a를 인자로 넘겨주면 에러가 없을것입니다.


1
2
3
CString b ="하하";
char a[100];
strcpy(a, b);
cs


a가 char* 형이기 때문에 (char* -> char*) 당연히 에러가없죠.


CString  => char* 변환


1
2
3
4
5
6
char * ch;
CString *str;
 
1) ch = (LPSTR)(LPCSTR)str;
2) ch = str.GetBuffer(str.GetLength());
3) wsprintf( ch, "%s", str);
cs


char*  =>  CString 변환


1
2
1) str = (LPCSTR)(LPSTR)ch;
2) str = ch;

cs


참고 1)


LPSTR 은 char* 입니다.

LPSTR

 char stirng의 32비트 포인터, char* 와 동일

LPCTSTR

 Constant character String의 32비트 포인터

UINT

 32비트 unsigned형 정수

DWORD

 unsigned long int형

BYTE

 8비트 unsigned 정수


MFC CString 문자열 char


참고 2) CString 클래스의 GetBuffer()는 CString을 char *로 바꿔줍니다. 


1
2
3
4
5
6
7
8
9
ex)
CString strTemp = _T("test"); 
char *getTemp=NULL
 
getTemp = malloc(strTemp.GetLength()+1); 
strcpy(getTemp, strTemp.GetBuffer(strTemp.GetLength()); 
printf("결과:%sn", getTemp); 
 
free(getTemp); 
cs


참고 3) operator LPCTSTR ()도 마찬가지입니다.


1
2
3
ex)
CString strTemp = _T("test");
char *getTemp = (LPSTR)(LPCSTR)strData;
cs


MFC, CString to Char* (문자열 변환)

이 글을 공유하기

댓글(0)

Designed by JB FACTORY