Salut à tous,
je débute sur C++,
à chaque fois que j'ai un problème je cherche sur le net l'erreur que m'affiche mon compilateur pour comprendre d'où vient mon erreur, mais là je sèche

je cherche à manipuler des string par le biais d'un itérateur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
{
	string str1("abcd");
	string str2("xyz");
	string::iterator it(str1.begin());
 
	cout << *it << endl;   // affiche 'a'
	str1.erase(it);   // supprime 'a'
	cout << str1 << endl;  // affiche "bcd"
	str1.insert(it, str2.begin(), str2.end());  // insert "xyz" au début de "bcd"
	cout << str1 << endl;  // affiche donc "xyzbcd"
	cout << *it << endl;  // affiche 'b' donc l'itérateur pointe sur 'b'
	str1.erase(it);  // devrait donc supprimer 'b' 
	cout << str1 << endl;  // mais ici il affiche "yzbcd", il a donc supprimé 'x' !?!?
}
d'autant plus que j'ai droit à une erreur d'accès à la mémoire à la fin de l’exécution du programme... jusqu'à un core dumped...
je compile avec g++, mais il n'affiche aucune erreur à la compilation

quelqu'un aurait-il une réponse à ce comportement particulier de l'itérateur ?
Merci.