#include #include #include #include"ut_mbtowc.h" #include"ut_debugmsg.h" UT_Mbtowc::UT_Mbtowc() { initialize(); } void UT_Mbtowc::initialize() { memset(&m_state,'\0', sizeof (m_state)); m_bufLen=0; } int UT_Mbtowc::mbtowc(wchar_t &wc,char mb) { if(++m_bufLen>MB_LEN_MAX) { initialize(); return 0; } m_buf[m_bufLen-1]=mb; size_t thisLen=mbrtowc(&wc,m_buf,m_bufLen,&m_state); UT_DEBUGMSG(("this_Len %d m_bufLen %d",(int)thisLen,m_bufLen)); if(thisLen==(size_t)-1 || thisLen==(size_t)-2)return 0; m_bufLen=0; return 1; }