错误做法:
WideCharToMultiByte(CP_ACP,0,strInput,strInput.GetLength() ,p,len ,NULL,NULL);
正确做法:
WideCharToMultiByte(CP_ACP,0,strInput,strInput.GetLength() + 1,p,len + 1,NULL,NULL);
或者:
WideCharToMultiByte(CP_ACP,0,strInput,-1,p,len + 1,NULL,NULL);
//第4个参数为-1时,字符串strInput将被设定为以NULL为结束符的字符串,并且自动计算长度。
乱码原因:str.GetLength()不计算结束符,因此正确做法要 +1.
博客指出WideCharToMultiByte函数使用时的错误做法,即未考虑字符串结束符。正确做法是在计算字符串长度时加1,如使用strInput.GetLength() + 1或设置第4个参数为 -1 自动计算长度,避免因str.GetLength()不计算结束符导致的乱码问题。
1298

被折叠的 条评论
为什么被折叠?



