我有以下XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<Buecherei>
<Mitarbeiterliste>
<Mitarbeiter id="42">
<Vorname>Max</Vorname>
<Nachname>Müller</Nachname>
</Mitarbeiter>
<Mitarbeiter id="44">
<Vorname>Erika</Vorname>
<Nachname>Möller</Nachname>
</Mitarbeiter>
</Mitarbeiterliste>
</Buecherei>
文件以UTF-8编码存储在文件中。
如果我现在尝试使用Boost属性树来读取它,则变音符号处理不正确。
这是读取文件的程序:
#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace boost::property_tree;
int main()
{
std::cout << "Hello World!\n";
ptree tree;
xml_parser::read_xml("D:\\umlauteXML.xml", tree);
for(auto& val : tree.get_child("Buecherei").get_child("Mitarbeiterliste")) {
if(val.first == "Mitarbeiter") {
std::string nachname = val.second.get<std::string>("Nachname","");
std::cout << val.second.get<std::string>("Vorname", "")<<"\n";
std::cout << val.second.get<std::string>("Nachname", "") << "\n";
}
}
}
字符串nachname
包含值Müller
而不是Müller
。
我正在Windows上使用Visual Studio 2017。
有没有更好的方法来读取包含变音符号的文件? (不同的编码?)