C++如何生成utf-8编码的文件

习惯了java生成文件的方便,c++如何生成utf-8编码的文件呢?
步骤如下:

1. 首先要写一个BOM头。UTF-8文件一般是要这个头的,当然也可以没有。
2. 将要生成的字符先使用宽字符格式生成,然后调用WideCharToMultiByte转为utf-8编码,写入文件。

例子如下:
    FILE * pFile = fopen("d://a.txt", "w"); char szBOM[4] = {(char)0xEF, (char)0xBB, (char)0xBF, 0}; fprintf(pFile, "%s", szBOM); wchar_t chNum[11] = L"零壹贰叁肆伍陆柒捌玖"; wchar_t chNum2[10] = L"亿千百拾万千百拾个"; char sz[10] = "112304823"; wchar_t result[32] = L""; int offset = 0; for(int i = 0; i < strlen(sz); ++ i) { char c = sz[i]; wchar_t w1 = chNum[ c - '0']; wchar_t w2 = chNum2[i]; swprintf(result + offset, L"%c%c", w1, w2); offset += 2; } char szChar[64] = ""; ::WideCharToMultiByte(CP_UTF8, 0, result, wcslen(result), szChar, 64, 0, 0); fprintf(pFile, "%s", szChar); fclose(pFile);
   
    注意的是,当使用wchar_t而不再是char时,所有的字符串操作函数都需要时w系列的,例如wcslen、swprintf

你可能感兴趣的:(C++)