Bonjour,
Je souhaiterais utiliser des string dans un programme c++ mais je rencontre un comportement étrange.
Quand je tape :
Code :
- string comment0;
- comment0.reserve(20);
- comment0[0] = '1';
- comment0[1] = '2';
- comment0[2] = '3';
- comment0[3] = '4';
- comment0[4] = '\0';
- cout << comment0.length() << " " << comment0.size() << " " << comment0.capacity() << endl;
|
Le résultat est 0 0 20, comme si la defintion du string comment0 valeur par valeur n'était pas prise en considération, malgré la présence d'un '\0' en bout de chaine.
Par contre le code suivant :
Code :
- string comment0;
- comment0.reserve(20);
- comment0= "1234";
- cout << comment0.length() << " " << comment0.size() << " " << comment0.capacity() << endl;
|
renvoie bien 4 4 20, comme atttendu.
Quelqu'un pourrait-il m'indiquer pourquoi n'est-il pas possible de définir une variable de type string élément par élement mais seulement d'un coup ?
J'ai vérifié la correspondance des valeurs entre elles (en demandant le renvoi de la valeur du booléen comment0[i] == 'i' pour 0<=i < 5 et les valeurs sont bien indentique ?
D'ou provient la différence selon-vous ?
Merci d'avance de votre aide.