Bonjour,
j'ai la fonction suivante qui me permet de calculer un code en fonction d'une chaîne de caractères.

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
    * int HashCode(string chaine)
    * {
    *     int ret=0;        // valeur retournée
    *     int p=0;        // parcours de la chaine en entree
    *     cout << chaine << " : " << (unsigned int)chaine[p] << endl; //////////////
    *     while(chaine[p] != '\0')
    *     {
    *         ret = ret*256 + (unsigned int) chaine[p];
    *         if (ret >= TAILLE_MAX_TAB)  
    *             ret = ret%TAILLE_MAX_TAB;
    *         p++;
    *     }
    *     cout << ret << endl; ///////////
    *     return ret;
    * }
Il y a un problème lorsque la chaine passée en paramètre commence par une lettre accentuée (ret prend alors comme valeur -xxxxxxxxx) et j'aimerais résoudre ce problème sans bidouillage (si je met une condition sur les caractères à lire ca fonctionne mais ca rend la fonction de hashcode moins performante!)
Quelqu'un a une idée ?