64,662
社区成员
发帖
与我相关
我的任务
分享
FILE *pf = _tfopen(_T("c:\\22.txt"),_T("wt+,ccs=UTF-8"));
wchar_t* wszString = L"abcd1234你我他fff";
//预转换,得到所需空间的大小,这次用的函数和上面名字相反
int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
//同上,分配空间要给'\0'留个空间
//UTF8虽然是Unicode的压缩形式,但也是多字节字符串,所以可以以char的形式保存
char* szU8 = new char[u8Len + 2];
//转换
//unicode版对应的strlen是wcslen
::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);
//最后加上'\0'
szU8[u8Len] = '\n';
szU8[u8Len+1] = '\0';
// szU8[u8Len+2] = '\0';
char ccc[]="\xef\xbb\xbf";
int ij = strlen(szU8);
int iii =fwrite(ccc,strlen(ccc), 1, pf);
iii = fwrite(szU8, strlen(szU8), 1, pf);
delete []szU8;
fclose(pf);
return;