关于TinyXML2的一个问题
需求:输出到文件路径含有中文的地址中
问题:直接调用XMLDocument的SaveFile(FILE *file)方法会导致保存的xml文件在文件末尾丢失部分内容
实现如下:
wstring wfolderPath = folderPath;
wstring fileName(item.first.begin(), item.first.end());
wstring filePath = wfolderPath.append(1, L'/').append(fileName);
FILE * file=_wfopen(filePath,"wb");
XMLError res = (*doc).SaveFile(file);
解决方法:
通过XMLPrint输出到字符串中,再通过std::stream相关操作进行文件保存
//输出到文件 wstring wfolderPath = folderPath; wstring fileName(item.first.begin(), item.first.end()); wstring filePath = wfolderPath.append(1, L'/').append(fileName); XMLPrinter printer; doc->Print(&printer); string xmlString=string(printer.CStr()); //通过二进制输出对换行符进行控制 std::ofstream file(filePath.c_str(),std::ios::out | std::ios::binary); if (file.is_open()) { file << xmlString << std::endl; file.close(); }