C++写入utf-8带BOM文件

/**
 * 为了能让3ds max 的打包zip程序可以读取txt列表文件.
 * 必需要能写入utf-8带BOM的txt文件.
 * 关键代码是用wstring_convert把wstring转成string
 * 以前试过wfstream ,  直接就无法写入中文
 * 调用的命令行:
 * "D:\Program Files\Autodesk\3ds Max 2014\maxzip" "D:\\Temp\\2.zip" @"D:\\Temp\\test.txt"
 * 经测试 可行
 */

#include "pch.h"
#include <iostream>
#include <fstream>
#include <string>
#include <codecvt>
using namespace std;

int main()
{
	std::wstring str = L"C:\\Users\\itkdq\\Desktop\\心电\\xindian13\\map\\guiziP5080366.jpg";
	std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
	std::string narrowStr = conv.to_bytes(str);
	{
		std::ofstream ofs("d:\\Temp\\test.txt"); //文件是utf8编码
		char c1 = 0xEF;// 仿utf-8 BOM头  三字节
		char c2 = 0xBB;
		char c3 = 0xBF;
		ofs << c1 << c2 << c3;

		ofs << narrowStr;
	}
}
相关文章
相关标签/搜索