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
댓글 달기