0

我正在使用 TinyXML2,但遇到了SetAttribute.

它接受字符串文字(即"001")但不接受字符串变量。

void createDoc(string customerID, string name) {
    XMLDocument doc;
    XMLNode * pRoot = doc.NewElement("containerRequirement");
    doc.InsertFirstChild(pRoot);

    XMLElement * p1Element = doc.NewElement("customer"); // Start customer

    p1Element->SetAttribute("ID", customerID); // not working
    p1Element->SetAttribute("ID", "001");      // working

    XMLElement * p2Element = doc.NewElement("name");
    cout << "NAME is: " << name << endl;
    p2Element->SetText(name);
}

请在这个问题上赐教。

  • customerID 不被接受为字符串,不像“001”被接受且没有错误。但是CustomerID和“001”都是字符串,为什么会这样呢?
4

1 回答 1

1

正如您在阅读tinyxml2.h时看到的那样, SetAttribute的各种定义包括:

void SetAttribute( const char* name, const char* value )    {
    XMLAttribute* a = FindOrCreateAttribute( name );
    a->SetAttribute( value );
}

因此,您需要更改customerID的代码,如下所示:

 p1Element->SetAttribute("ID", customerID.c_str());

其中c_str()本质上将std::string转换为char*(有关详细信息,请参阅链接)。对于没有从std::stringchar *的隐式转换的原因的讨论,我邀请您阅读这篇文章

希望能帮助到你!

于 2016-06-29T06:24:01.067 回答