Fonction qui permet de faire le tri alphabétique en c++

Fermé
williamWant Messages postés 1 Date d'inscription lundi 1 janvier 2018 Statut Membre Dernière intervention 5 janvier 2018 - 5 janv. 2018 à 07:54
Dalfab Messages postés 703 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 1 mars 2023 - 6 janv. 2018 à 15:01
Bonjour à tous. J'ai un exercice qui me demande d'entrer les noms et de les classer en ordre alphabétique. J'ai fait presque tout le travail mais suis bloquer au niveau du classement. J'ai essayé avec strcmp mais apparament il n'existe pas en c++

2 réponses

Dalfab Messages postés 703 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 1 mars 2023 100
6 janv. 2018 à 15:01
Bonjour,

strcmp()
c'est du C, donc est tout à fait utilisable en C++. Mais la fonction est à éviter.
Pour comparer des chaînes de caractères en C++ (des
std::string
), il suffit d'utiliser les opérateurs :
if ( str1 < str2 )
fonctionne très bien.

Pour faire des comparaisons particulières (tableau de char avec un terminateur, comparaisons en tenant compte des caractères accentués de la langue courante), on peut utiliser :
// accès à la facet de gestion des chaînes de la locale courante
auto colc = std::use_facet<std::collate<char>>( std::locale("") ); 
if ( colc.compare(s1.c_str(), s1.c_str()+s1.size(), s2.c_str(), s2.c_str()+s2.size()) < 0 ) {
   // correspond à if ( str1 < str2 ) en tenant compte de la locale courante
   // presque équivalent à if ( strcmp( s1.c_str() , s2.c_str() ) < 0 )
2
Whismeril Messages postés 18279 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mars 2023 888
5 janv. 2018 à 08:46
0