现在我想通过Boost ptree
生成一个加密的XML文件。
using boost::property_tree::ptree;
ptree pt;
pt.add("License.Unalterable.Signed.Guid", m_Guid);
pt.add("License.Unalterable.Signed.CustomerId", m_CustomerId);
pt.add("License.Unalterable.Signed.Name", m_Name);
pt.add("License.Unalterable.Signed.Version", m_version);
write_xml(licenseFileName, pt);
我希望在调用write_xml()
之前加密整个xml文件。通过阅读write_xml
的代码,我知道xml节点是从ptree逐个读取的,然后一个接一个地将它们写入fstream
。 有没有办法在将整个xml数据流写入文件之前获取整个xml数据流?以便我可以加密整个数据流,然后将它们写入文件。
目前,我的解决方案是在write_xml
创建后重新读取此xml文件,然后在加密xml内容后将其写回。
答案 0 :(得分:3)
评论者建议:
std::ostringstream oss;
write_xml(oss, pt);
// now you can encrypt
std::string plain_text = oss.str();
现在您可以加密明文并将密文写入文件