본문 바로가기
Programing_Language/C++

[MFC] 문자열 변환 매크로 및 사용 주의사항

by neohtux 2019. 4. 6.
728x90

CString 을 char*나

char*를 CString으로 변환시 W2A A2W 혹은

_T(" ") 매크로를 사용하여 변환하는경우 스택오버플로우가 발생하는 문제점을 직면했다.

 

반복문내에서 여러번 변환과정할때 내부 스택을 사용하기 때문에, 반복적으로 사용하면 스택오버플로우가 발생함.

 

ATL7.0부터 도입된 CW2ACA2W는 위의 문제를 피할 수 있다.

단, 내부 버퍼의 일정 크기를 넘어서면 힙에 메모리를 할당하게 된다. 따라서, 스택 오버플로우로 인한 프로그램이 죽는현상을 방지할 수 있다.

 

 

 

ex) char*  -> CString 으로 변환

 

 

 

 

 

ex) CString -> char*로 변환

 

 

 

 

 

 

ex 0611_추가) UTF_8 문자열 집합 인코딩 변환 하는법

 

 

참조 : https://docs.microsoft.com/en-us/previous-versions/87zae4a3(v=vs.140)

300x250

댓글