wcstombs로 멀티바이트 문자열을 출력하려 했지만, 안됩니다.
글쓴이: dltkddyd / 작성시간: 금, 2013/03/22 - 2:32오후
와이드 문자열을 멀티바이트 문자열로 바꾸어 출력하려 했습니다. 소스는 다음과 같습니다.
#include <clocale> #include <iostream> using namespace std; #include <cstdlib> #include <cwchar> #include <cstring> int main() { setlocale(LC_ALL,""); const wchar_t* wstr=L"코끼리 비스켓 먹고 사래 들려 기침하다 코가 비틀어져 넘어져 다쳤다. 다리에 붕대 감은 코끼리는 붕대가 풀릴 날을 기다리고 있었다. 그런데 ..."; wcout<<L"기린"<<endl; wcout<<wstr<<endl; size_t length; char mbs[30]; length=wcstombs(mbs,wstr,(size_t)30); if((int)length>=(int)sizeof(mbs)) { mbs[sizeof(mbs)-1]=0; } wcout<<mbs<<endl;//여기에서는 wstr이 가리키는 문자열과 같은 문자열을 모두 출력하는 이상한 문제 발생 wcout<<sizeof(mbs)<<endl; cout<<strlen(mbs)<<endl;//여기서는 mbs의 길이가 제대로 출력되지도 않습니다. wcout<<wcslen(wstr)<<endl; cout<<(int)strlen(mbs)<<endl; cout<<(int)length<<endl; return 0; }
주석처리문에서 제기한 문제들이 발생하는데요, 이 문제 어떻게 해결해야 하나요. 첫 번째 문제는 cout으로 출력하려 해도, 제대로 안 됩니다.
Forums:
멀티바이트 문자가 아리라서 그런거였네요.
그런데
strlen(mbs)
는 여전히 제대로 값이 출력되지 않습니다...
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
http://stackoverflow.com/ques
http://stackoverflow.com/questions/8947949/mixing-cout-and-wcout-in-same-program
댓글 달기