मैं std :: सूची में संग्रहीत डेटा तत्वों का उपयोग करके एक स्ट्रिंग बनाने की कोशिश कर रहा हूं, जहां मैं केवल तत्वों के बीच अल्पविराम रखना चाहता हूं (यानी, यदि तत्व {ए, बी हैं , सी, डी} सूची में, परिणाम स्ट्रिंग "ए, बी, सी, डी" होना चाहिएstd :: सूची इटरेटर: अगला तत्व
इस कोड काम नहीं करता है:।
typedef std::list< shared_ptr<EventDataItem> > DataItemList;
// ...
std::string Compose(DataItemList& dilList)
{
std::stringstream ssDataSegment;
for(iterItems = dilList.begin();
iterItems != dilList.end();
iterItems++)
{
// Lookahead in list to see if next element is end
if((iterItems + 1) == dilList.end())
{
ssDataSegment << (*iterItems)->ToString();
}
else
{
ssDataSegment << (*iterItems)->ToString() << ",";
}
}
return ssDataSegment.str();
}
मैं कैसे मिलता है "पर-अगली आइटम "एक std :: सूची में एक iterator का उपयोग कर? मैं उम्मीद करता हूं कि यह एक लिंक की गई सूची है, मैं अगले आइटम पर क्यों नहीं मिल सकता?
आपको अपने 'फॉर लूप' में भी एक त्रुटि है: 'iterItems = dilList.end();' 'iterItems होना चाहिए! = DilList.end();'। –
@Fred - True। यह बात बताने के लिए धन्यवाद। –
संभावित डुप्लिकेट: http://stackoverflow.com/questions/3673684/peek-the-next-element-in-stl-container –