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
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char c = 'x'; c = static_cast<char>(toupper(c));
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum 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> ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
t'as essayé simplement ça :
sinon dans boost, l'algo to_upper() qui prend juste un paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.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.
Partager