2016-03-18 55 views
0

我正在使用TinyXML2,並面臨SetAttribute的問題。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」都是字符串,爲什麼會發生這種情況?
+0

請詳細說明「不工作」的含義。包括你得到的確切的錯誤信息和'customerID'的確切值。 – Tomalak

回答

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 :: stringchar *沒有隱式轉換的原因的討論,我邀請您閱讀這個post

希望它有幫助!

相關問題