2018년 2월 26일 월요일

MFC에서 CString 문자열을 cout을 통해서 콘솔 창에 출력하는 방법





MFC에서 CString 문자열을 cout을 통해서 콘솔 창에 출력하는 방법

간단한 이야기 같으나 멋모르고 달려들다간 간단하지 않다는 걸 깨닫게 된다는게 문제.

CString msg = _T("");
msg += "::_TrackMouseEvent()가 WM_MOUSELEAVE 메시지를 발생 시켰군";
msg += "\n현재의 클라이언트 뷰의 자식 윈도우의 영역을 빠져~~~ 나갈 때~~ 발생시키는 메시지이다.";

//wcout << (const wchar_t*)msg << endl; //이건 띄워쓰기 뒷 부분은 안 나옴
cout << (CString)msg << endl;

위의 코드를 실행하면 cout을 출력하는 부분에서 msg에 대한 주소 값만 달랑 출력하고 끝난다.
0078F488

wcout << (const wchar_t*)msg << endl 
이 방법을 사용해 보면 문자열 내용의 첫 번째 띄워쓰기 뒷 부분은 또 나오질 않는다.

해법은 
프로젝트명 - 마우스 우 클릭 - Properties - Configuration Property -
General - Character set을 Multi-Byte character set으로 설정해 줘야 가능하다.

이렇게 설정하고 나면 cout 대신에 printf()를 이용해도 된다.
참고로 printf()와 cout은 전자가 속도에서 훨씬 빠르다는 것.

printf("%s", msg);  //가능

댓글 없음:

댓글 쓰기