Visual Studio 계열은 C++ 표준인 std::string 보다는 CString을 더 많이 사용한다.
구글에서 CString을 검색하면 나오는… 이 cstring 말고…
그런데, VC6의 CString::Replace()는 뭔가 문제가 있었던 것 같다.
이 CString…
VC6에서 Unicode 프로젝트를 돌리며 여러번 확인했었는데, Replace()는 문자열 치환을 한 번만 수행했다. 즉,
CString cs = _T("Hello World !");
cs.Replace(_T(" "), _T(" dirty "));
MessageBox(cs);
를 실행하면
Hello dirty World !
가 출력되었다[각주:1].
도움말을 찾아보지도 않고 그러려니하고 써왔었는데, 우연한 기회에 VS2013에서 테스트해보니 정상적으로 동작했다.
속으로 '아… MS가 이런 변화를 별도로 공지하지 않았나…' 하고 있었는데, 도움말을 찾아보니 그게 아니었다.
이 함수는 원래부터 그렇게 디자인되어있었고, 단지 VC6에서 잘못 동작한 것이었다…
문제는 이게 정상인 줄 알고 작성한 코드가 꽤 되었고, 그걸 그대로 새 컴파일러로 돌린 경우가 있다는 것…
그리고, 그 코드가 바로 iTrans 라는 것 정도… lllorz
PC 케이스를 Nanoxia의 Deep Silence 2로 교체 (2) | 2015.01.10 |
---|---|
뜬금없이 bing.com이 자동실행되는 문제 해결법 (0) | 2015.01.03 |
배치 파일에서 UTF-8을 쓸 수 있다는 것을 이제야 알았다니!! (0) | 2014.09.20 |
내가 사진/동영상을 정리하는 방법 (4) | 2014.05.13 |
Visual Studio 2012에서 RC4005: macro redefinition 문제 피하기 (0) | 2014.03.12 |
댓글