रेडएक्सएमएल का उपयोग करके मैं नोड्स के एक सेट के माध्यम से लूप करना चाहता हूं, और ऐसा करने के लिए मुझे सबसे अच्छा तरीका मिल रहा है (भरोसेमंद स्टैक ओवरफ्लो से, दस्तावेज़ में एक उदाहरण नहीं दिखता है यात्रा):rapidxml: नोड्स के माध्यम से पुनरावृत्ति कैसे करें? आखिरी भाई
while (curNode->next_sibling() !=NULL) {
string shiftLength = curNode->first_attribute("shiftLength")->value();
cout << "Shift Length " << "\t" << shiftLength << endl;
curNode = curNode->next_sibling();
}
दुर्भाग्य से, मेरी OSX 10.6 पर इस पिछले भाई नोड बाहर छोड़ने है - मुझे लगता है कि क्योंकि पाश के अंतिम चरण में, next_sibling दो बार कहा जाता है। मैं, यह पिछले नोड पर प्राप्त कर सकते हैं अगर मैं लिखना पाश के बाद:
cout << " LAST IS: " << curNode->first_attribute("shiftLength")->value();
... लेकिन यह है कि कुशल है, और कार्यक्रम उस बिंदु पर इस्तीफा।
पहला प्रश्न: क्या यह मेरे सेटअप (ओएसएक्स 10.6) का एक अद्वितीय फॉबल हो सकता है या मैंने गलत कोड किया है?
दूसरा प्रश्न: क्या किसी के पास रेडएक्सएमएल का उपयोग करते हुए अज्ञात संख्या में एक्सएमएल नोड्स के माध्यम से पुनरावृत्ति करने का सही तरीका है?
धन्यवाद लोग
पीट
invariants के मामले में loops के बारे में सोचो। आपका गैर-नल अगले भाई बहनों के साथ सभी नोड्स के लिए निष्पादित करता है। यह अंतिम नोड के लिए सच नहीं है। –