轉自http://blog.csdn.net/pizzq/article/details/4311194
習慣了java生成文件的方便,c++如何生成utf-8編碼的文件呢?
步驟如下:
1.首先要寫一個BOM頭。UTF-8文件一般是要這個頭的,當然也可以沒有。
2.將要生成的字符先使用寬字符格式生成,然後調用WideCharToMultiByte轉爲utf-8編碼,寫入文件。
例子如下:
FILE*pFile=fopen("d://a.txt","w");
charszBOM[4]={(char)0xEF,(char)0xBB,(char)0xBF,0};
fprintf(pFile,"%s",szBOM);
wchar_tchNum[11]=L"零壹貳叄肆伍陸柒捌玖";
wchar_tchNum2[10]=L"億千百拾萬千百拾個";
charsz[10]="112304823";
wchar_tresult[32]=L"";
intoffset=0;
for(inti=0;i<strlen(sz);++i)
{
charc=sz[i];
wchar_tw1=chNum[c-'0'];
wchar_tw2=chNum2[i];
swprintf(result+offset,L"%c%c",w1,w2);
offset+=2;
}
charszChar[64]="";
::WideCharToMultiByte(CP_UTF8,0,result,wcslen(result),szChar,64,0,0);
fprintf(pFile,"%s",szChar);
fclose(pFile);
注意的是,當使用wchar_t而不再是char時,所有的字符串操作函數都需要時w系列的,例如wcslen、swprintf