Bug étrange avec le string et les tableaux statiques

Bonjour,
J'ai le projet de crée un programme C++ capable de convertir les nombres écrit (par exemple : dix) en valeur numérique (ici c'est : 10). Sauf que j'ai un problème avec un string qui change de valeur sans que l'on lui ai demander.

J'ai réussis à extraire le bout de code qui bug dans ce programme (il est long mais facile à lire):

#include <iostream>

using namespace std;

int main()
{
    string mot;
    cout << "ecrit un mot" << endl; //j'écrit par exemple "coucou"
    getline(cin, mot);

    int const tailleListe = 17;

    string nombreListe [tailleListe];
    nombreListe[0] = "zero";
    nombreListe[1] = "un";
    nombreListe[2] = "deux";
    nombreListe[3] = "trois";
    nombreListe[4] = "quatre";
    nombreListe[5] = "cinq";
    nombreListe[6] = "six";
    nombreListe[7] = "sept";
    nombreListe[8] = "huit";
    nombreListe[9] = "neuf";
    nombreListe[10] = "dix";
    nombreListe[11] = "onze";
    nombreListe[12] = "douze";
    nombreListe[13] = "treize";
    nombreListe[14] = "quatorze";
    nombreListe[15] = "quinze";
    nombreListe[16] = "seize";
    nombreListe[17] = "vingt";

    cout<<mot<<endl; // et ce n'est plus "coucou" qui est enregistré mais "vingt" (le contenu de la dernière ligne du tableau statique)
    return 0;
}


Il s'agit de mon premier bug du genre.
Et je compile sous code::block

1 réponse

  1. Modérateur
    Un tableau de taille 17 va de 0 à 16 (17 cases) donc taper en case 17 t'offre un petit buffer overflow, c'est déjà pas mal, car tu peux aussi avoir un SEG FAULT.
    1. Effectivement, j'ai fait une erreur d'inattention. Merci de ton aide
    2. Modérateur
      Si le problème est résolu, merci de marquer le sujet comme résolu.