mbstowcs和codecvt的怪异处,求高手谁能破解
caowk 2009-01-20 11:25:41
#include <locale>
#include <stdlib.h>
using namespace std;
int main(int argc, char* argv[])
{
char s[] = "abc中国ab"; //"国abc中国ab";
int len = strlen(s) + 1;
wchar_t o[100], x[100];
setlocale(LC_ALL, "");
mbstowcs(o, s, len);
char* from;
wchar_t * to;
mbstate_t cs;
locale loc("");
const codecvt<wchar_t, char, mbstate_t>& oCode = use_facet< codecvt<wchar_t, char, mbstate_t> >(loc, NULL, false);
codecvt<wchar_t, char, mbstate_t>::result nRet = oCode.in(cs, s, s+len, from, x, x+100, to);
return 0;
}
现象1:该程序中得到的0和x的内容居然不一样.
现象2:该程序中,s的内容换成注释中的串后,得到的0和x的内容居然一样了.
怪异的很啊.