Bonjour,

J'ai un problème avec une variable de type stringstream, dont la valeur ne change pas dans une boucle.
J'ai créé une structure qui contient des strings. Je dois convertir l'une de ces strings en int pour un for().

Je crée donc un stringstream pour faire la conversion et je transfère la string de ma structure dans le stringstream et ensuite j'envoie le stringstream vers mon int.

Ca marche très bien à la première itération, mais au second passage dans ma boucle, il indique la même valeur pour mon int, la conversion ne se fait donc pas ou en tout cas le stringstream n'accepte pas la nouvelle valeur.

J'ai lu sur un autre forum de placer la déclaration du stringstream dans ma boucle pour la réinitialiser à chaque tour de boucle, mais je suppose que ça prend des ressources inutilement.

Ma question donc, pourquoi la valeur de mon int ne change pas ?

Ici j'ai essayé quelque chose et j'ai été surpris du résultat :
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
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
 
using namespace std;
 
struct f3X
{
	string data;
};
 
int main(int argc, char*argv[]) {
 
	f3X f3xt[5];
	stringstream ss_in;
	int nbr_ss;
 
	for(int i = 0; i < 5; i++) {
		ss_in << i;
		f3xt[i].data = ss_in.str();
 
		cout << "i : " << i << endl;
		cout << "ss_in.str() : " << ss_in.str() << endl;
		cout << "f3xt[" << i << "].data : " << f3xt[i].data << endl << endl;
	}
}
En sortie j'ai :
i : 0
ss_in.str() : 0
f3xt[0].data : 0

i : 1
ss_in.str() : 01
f3xt[1].data : 01

i : 2
ss_in.str() : 012
f3xt[2].data : 012

i : 3
ss_in.str() : 0123
f3xt[3].data : 0123

i : 4
ss_in.str() : 01234
f3xt[4].data : 01234
Comment se fait-il que la chaîne s'allonge à chaque fois au lieu de passer simplement de 0 à 1, à 2, etc. ?

Merci.
Cordialement.