#include #include #include #include"ut_mbtowc.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); if(thisLen>MB_LEN_MAX)return 0; if(thisLen==0)thisLen=1; m_bufLen-=thisLen; return 1; }