1

我正在尝试使用 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>
          ]

关于可能导致错误的任何指针?

4

1 回答 1

1

您可以得到如图所示的消息,仅仅是因为没有从std::stringto的隐式转换std::wstring

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

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

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

于 2015-01-08T22:16:30.633 回答