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 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 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 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
5 janv. 2018 à 08:46
0