今天遇到一个问题,在Unicode工程中用CStdioFile的WriterString方法输出中文时,只输出了英文部分,中午部分被丢弃了。很是郁闷,Debug程序发现到了__wctomb_mt函数中
if ( wchar > 255 ) /* validate high byte */
{
errno = EILSEQ;
return -1;
}
遇到大于0X80就认为结束了,搞不懂微软是怎么个意思。
后来在网上一搜,是有许多人遇到过这个问题。
如:Unicode下用CStdioFile写文件的问题
http://topic.youkuaiyun.com/t/20020605/18/781216.html
CStdioFile类在UNICODE工程中WriteString中文失败的原因
http://blog.vckbase.com/zaboli/archive/2007/04/05/25261.html
后来干脆用CFile了,
USES_CONVERSION;
char* sTem = T2A(s);
file.Write(sTem, strlen(sTem));
file.Write("/r/n", 2);