关于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();
            }

 

posted @ 2024-03-20 11:47  BlackSnow  阅读(73)  评论(0)    收藏  举报