TinyXML2 SetAttribute不能接受字符串对象?

时间:2016-03-18 16:50:42

标签: xml setattribute tinyxml2

我正在使用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作为字符串,不像&#34; 001&#34;被接受,没有错误。但是CustomerID和&#34; 001&#34;是字符串,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

正如您可以看到阅读 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 :: string char * 的隐式转换的原因的讨论,我邀请您阅读此post

希望它有所帮助!