Salut,
J'ai recherché un peu partout cette information mais je la trouve pas.
la fonction find, permettant de trouver un sous-chaine dans un chaine, est-elle sensible à la casse ?
Version imprimable
Salut,
J'ai recherché un peu partout cette information mais je la trouve pas.
la fonction find, permettant de trouver un sous-chaine dans un chaine, est-elle sensible à la casse ?
Bien sûr. Les opérations sur les std::string sont très bas niveau, elles n'opèrent que sur des valeurs entières et ne font aucune interprétation des caractères.
D'ailleurs, la notion de casse nécessite d'introduire la notion de majuscule / minuscule, qui est loin d'être triviale à gérer avec certains jeux de caractères.
Ok :merci:
Pas tout à fait d'accord.
Elle interprètent les caractères, mais l'interprétation par défaut ne fait rien de spécial. J'utilise quotidiennement au boulot une classe de chaînes insensible à la casse qui est juste comme std::string un typedef vers std::basic_string, mais avec d'autres paramètres templates, en particulier un char_trait qui permet d'être case_insensitive.
Je me suis inspiré de http://www.gotw.ca/gotw/029.htm (de mémoire, il y a une erreur dans le code proposé, erreur corrigée dans la version du livre, qui qui peut se retrouver tout seul).
Et tout cela est évidement dans la FAQ.
D'ailleurs, la FAQ reprend l'erreur du site gotw. Le problème est dans la fonction find si on ne trouve pas, on est sensé renvoyer NULL. Par exemple en remplaçant :
parCode:return s;
Code:return n>0 ? s : 0;