벌레잡이

디버깅

춤추는수달 2021. 10. 30. 12:29

CFile.Write(CString , int); 사이사이 공백 버그

CFile.Write(CString , int); 로 파일에 텍스트를 출력하려고 했다. 그런데 출력된 txt 파일을 열어보니 글자 사이사이마다 공백이 포함되어있었고, 이에 따라 출력하려던 글자의 절반만 출력되었다. 연구 결과 원인은 Wide 캐릭터와 그냥 캐릭터 사이의 차이 때문인 것 같다.  CFile.Write 함수는 인자로 CString 형식을 받아주기는 하지만 특정 빌드 환경에서 문자 사이마다 공백이 추가된다. 그래서 W2A함수를 사용해 유니코드에서 멀티바이트 형식으로 변환해주었더니 원하는 대로 잘 동작하였다. CFile.Write(W2A(CString), int); 과 같이 써주었다. 주의할 점은 W2A 함수를 사용하기 전 USES_CONVERSION; 문장을 써줘야 에러없이 동작한다.


 

'벌레잡이' 카테고리의 다른 글

런타임 에러  (0) 2021.10.19
컴파일 에러  (0) 2021.10.19