自己写的一个函数。
如果字符串中含有中文,简单截取会出现乱码,简单的做法是,把它先转换成宽字符然后截取,完成后再转回来。当然,对于本身是unicode的程序,直接截取就行了,不必转换。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool truncstringleft(lptstr lpszsource, int ncnt)
{
atlassert(lpszsource);
if(null == lpszsource || ncnt <1 || !lpszsource[0])
return false;
wchar wszwide[max_path * 2];
#ifdef unicode
_tcscpy(wszwide, lpszsource);
#else
multibytetowidechar(cp_acp, 0, lpszsource, -1, wszwide, arraysize(wszwide));
#endif
if(wcslen(wszwide)>ncnt)
wszwide[ncnt] = 0;
#ifdef unicode
_tcscpy(lpszsource, wszwide);
#else
widechartomultibyte(cp_acp, 0, wszwide, -1, lpszsource, max_path, null, null);
#endif
return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一些相关的讨论:
http://dev.csdn.net/develop/article/66/66387.shtm
http://community.csdn.net/expert/topic/3906/3906053.xml?temp=.4827692