#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
string s = "Haven't got an idea why.";
auto beg = s.begin();
auto end = s.end();
while (beg < end)
{
cout << *beg << '\n';
if (*beg == 'a')
{//whithout if construct it works perfectly
beg = s.erase(beg);
}
++beg;
}
return 0;
}
Pourquoi si j'efface un ou plusieurs caractères de cette chaîne, ce code se casse? Je suppose que cela a quelque chose à voir avec l'itérateur retourné après que l'opération d'effacement ait été créée à une adresse plus élevée que l'itérateur final, mais je ne suis pas sûr et ce n'est sûrement pas un bon comportement. Ou est-ce?Comportement d'itérateur étrange
Il est probablement plus facile d'effacer les caractères de 'end()' à begin() ', puisque' begin() 'ne changera pas lors de l'effacement des caractères. – MSalters