Tout d'abord, std::string
n'est pas une chaîne C. Vous n'avez pas besoin de le terminer par NULL. Deuxièmement, l'opérateur []
n'est valide que pour les indices < std::string::length()
, ce qui signifie qu'au moins N éléments doivent être attribués à l'avance avant de pouvoir accéder à un élément entre 0
et N-1
.
std::string str(4); // construct a string of size 4
str[0] = 'A';
str[1] = 'b';
str[2] = 'h';
str[3] = 'i';
std::cout << str;
Édition: Mais voir aussi Johnsyweb's answer. Le grand avantage de std::string
sur C-cordes est que vous n'avez pas à vous soucier de l'allocation de mémoire. Vous pouvez utiliser l'opérateur +=
ou la fonction membre push_back
et créer la chaîne caractère par caractère sans vous soucier de la quantité de mémoire à réserver.
Je l'ai eu. Merci. – badmaash
En fait, je n'aime pas ce constructeur de std :: string car si vous ne pouvez pas vous souvenir de l'ordre et que vous mettez le caractère en premier, il se compilera et vous donnera la mauvaise chose. Si vous faites std :: string ('', 4) il vous donnera une chaîne de longueur 32 (ASCII de l'espace) remplie de caractères ASCII 4. Problème malheureux de char ayant des conversions implicites avec size_t. – CashCow
@CashCow: Je suis d'accord, il est inconvenant que 'char' représente à la fois un caractère et se comporte comme un entier ... –