Salut, et bienvenue sur le forum.
Visiblement, tu commet l'erreur "classique" d'utiliser des chaines de caractères "Cstyle" (qui sont en réalité des tableaux de caractères terminés par '\0' ) plutôt que la classe string, disponible dans l'espace de noms std, par inclusion du fichier d'en-tête <string>...
Le principe général en C++ et le premier conseil que l'on puisse donner à quelqu'un qui débute est en effet de préférer les possibilités propres au C++ à toute alternative issue du C car elles sont non seulement plus sécurisantes mais aussi bien plus faciles à l'emploi.
Ainsi, si tu t'attends à ce que l'utilisateur introduise uniquement "ADD LIVRE", la classe string pourra s'utiliser sous la forme de
1 2 3 4 5 6
| std::string intro;
std::getline(std::cin, intro);
if(intro=="ADD LIVRE")
{
// c'est vrai
} |
qui ne posera aucune problème si l'utilisateur venait à écrire
ADD LIVRE titre="Harry Potter a l'ecole des sorciers" auteur="JK Rolling" resume="Le premier tome de la saga d'un jeune sorcier"
là où, en utilisant la méthode "C style", tu cours le risque de dépassement de capacité avec une forme proche de
1 2 3 4 5
| char str[9]; /* il faudrait 9 caractères représentatifs plus le '\0',
* (soit 10 caractères au total) rien que pour ADD LIVRE
* et on n'en a que 8+1
*/
gets(com); |
et où tu devra utiliser les fonctions C de comparaison de chaines, sous une forme proche de
1 2 3 4
| if(strcmp(str,"ADD LIVRE") )
{
// c'est vrai
} |
De plus, la classe string fournit une série non négligeable de fonctions membres qui permettent de manipuler facilement les chaines de caractères: fonctions de recherches de caractères ou de chaines, "scission" concaténation, insertion, récupération d'une chaine "C style", j'en passe et de meilleures.
Tu trouvera une bonne partie des réponses que tu peux te poser à leur sujet sur la page de la FAQ qui leur est consacrée
Partager