没有操作员发现 boost read_xml 函数错误

no operator found error with boost read_xml function

我正在尝试使用 read_xml 函数将 xml 文件读入 ptree,如下所示:

read_xml(myFile, myPtree, boost::property_tree::xml_parser::trim_whitespace);

这里的 myFile 是一个 std::string 而 myPtree 是一个 basic_ptree<std::string, std::wstring>.

构建时出现以下错误:

xml_parser_read_rapidxml.hpp(48): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Alloc>' (or there is no acceptable conversion)
         with
          [
              _Elem=char,
              _Traits=std::char_traits<char>,
              _Alloc=std::allocator<char>
          ]

关于可能导致错误的原因的任何指示?

您可以获得如图所示的消息,这仅仅是因为没有从 std::stringstd::wstring

的隐式转换

在这种情况下,匹配字符串类型或尝试调整 basic_ptree 专业化

由于您是从 XML 解析的,并且 XML 解析器仅支持一种字符串类型,因此 可能需要 使密钥和数据字符串类型相同。

您可以使用匹配 XML 解析器的字符串类型,并使用 translator_between<std::string, std::wstring> 调用适当的字符集转换