J'essaye de construire une chaîne en utilisant des éléments de données stockés dans une liste std ::, où je veux placer des virgules seulement entre les éléments (ie, si les éléments sont {A, B , C, D} dans la liste, la chaîne de résultats doivent être "A, B, C, D"std :: list itérateur: get next element
Ce code ne fonctionne pas.
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();
}
Comment puis-je obtenir à « la Continuer- item "dans une liste std :: en utilisant un itérateur? Je m'attendrais à ce que ce soit une liste liée, pourquoi ne puis-je pas passer à l'article suivant?
Vous avez également une erreur dans votre boucle 'for':' iterItems = dilList.end(); 'devrait être' iterItems! = DilList.end(); '. –
@Fred - Vrai. Merci d'avoir fait remarquer cela. –
Copie possible de: http://stackoverflow.com/questions/3673684/peek-the-next-element-in-stl-container –