Salut à tous,
Je suis débutant, et je voudrais savoir comment interroger l'égalité de deux strings de manière insensible à la casse.
Je fais sChaineInterrogée==sChaineModele
Ca marche, mais c'est sensible à la casse.
Merci à tous.
Alain
Version imprimable
Salut à tous,
Je suis débutant, et je voudrais savoir comment interroger l'égalité de deux strings de manière insensible à la casse.
Je fais sChaineInterrogée==sChaineModele
Ca marche, mais c'est sensible à la casse.
Merci à tous.
Alain
:faq:
Salut,
avant de les comparer, tu mets tous les caractères de tes deux chaînes en majuscule. J'espère que c'est ce que tu voulais. :)
Salut,
Oui c'est ce que je veux faire.
Dans la FAQ, il passe par des foncteurs. Et de plus, ça ne marche pas chez moi, je ne dois pas avoir le bon header pour transform.
Je voudrais faire plus simple.
Juste utiliser une boucle et toupper().
Mais toupper prend un int comme argument.
Comment puis-je transmettre chacuns des caractères de ma string à toupper() et les recuperrer pour en faire une nouvelle string.
Comment convertir un caractère en int?
Merci.
Alain
La conversion de char en int est automatique (un char est un petit entier). Par contre la conversion inverse demande un petit static_cast, puisqu'il y a perte de taille.
Code:
1
2 char c = 'x'; c = static_cast<char>(toupper(c));
Euh, juste pour être sûr: toupper() est supposé accepter les valeurs négatives ou faut-il passer par un unsigned char, comme pour les fonctions isXXXX() de <ctype.h> ?
t'as essayé simplement ça :
sinon dans boost, l'algo to_upper() qui prend juste un paramètre.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <string> #include <algorithm> int main() { std::string str( "test" ); std::transform( str.begin(), str.end(), str.begin(), toupper ); std::cout << str << std::endl; return 0; }
8O le header <algorithm> fait partie de la librairie standard, bizarre que tu ne l'aies pas :? Tu as quoi comme erreur ?
C'est exactement ce que fait transform (sauf qu'il modifie directement la string, il n'en crée pas une nouvelle) ... Donc si tu ne peux pas l'utiliser, il te suffit de la réécrire : boucle sur l'iterateur de ton string et applique exactement ce qu'il y a dans la FAQ : cast vers uchar et fonction toupper.Citation:
Je voudrais faire plus simple.
Juste utiliser une boucle et toupper().
Mais toupper prend un int comme argument.
Comment puis-je transmettre chacuns des caractères de ma string à toupper() et les recuperrer pour en faire une nouvelle string.
Comment convertir un caractère en int?
Merci.
Alain
Sinon l'article "comment manipuler des chaînes indépendamment de la casse" donne une autre solution.
Merci les gars pour toute ces infos.
Alain