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;
	}
}
相關文章
相關標籤/搜索