Maison >développement back-end >C++ >Programme C++ pour comparer l'ordre lexicographique de deux chaînes
La comparaison de chaînes de dictionnaire signifie que les chaînes sont comparées dans l'ordre du dictionnaire. Par exemple, s'il y a deux chaînes « pomme » et « appel », la première chaîne viendra en dernier car les trois premiers caractères de « application » sont identiques. Ensuite, pour la première chaîne, le caractère est « l » et dans la deuxième chaîne, le quatrième caractère est « e ». Puisque « e » est plus court que « l », il viendra en premier si nous trions lexicographiquement.
Les chaînes sont comparées lexicographiquement avant d'être organisées. Dans cet article, nous verrons Différentes techniques pour comparer lexicographiquement deux chaînes en utilisant C++.
L'objet chaîne C++ a une fonction compare(), qui accepte une autre chaîne en entrée et la compare.
Compare la chaîne actuelle à la deuxième chaîne. Cette fonction renverra 0 lorsque deux chaînes sont identiques Lorsque les chaînes sont identiques, il renverra un nombre négatif (-1) lorsque la première chaîne est plus grande Lorsque la première chaîne est plus petite, traduisez-la en chinois :Lorsque la première chaîne est plus petite, c'est un nombre positif (+1).
<first string>.compare( <second string> )
Jetons un coup d'œil à l'algorithme et à l'implémentation correspondante en C++.
#include <iostream> using namespace std; string solve( string s, string t ){ int ret; ret = s.compare( t ); if( ret == 0 ) { return s + " and " + t + " are the same"; } else if( ret > 0 ) { return s + " is larger than " + t; } else { return s + " is smaller than " + t; } } int main(){ string s = "apple"; string t = "appeal"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "popular"; t = "popular"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "Hello"; t = "hello"; cout << "The result of comparison: " << solve( s, t ) << endl; }
The result of comparison: apple is larger than appeal The result of comparison: popular and popular are the same The result of comparison: Hello is smaller than hello
En C++, nous pouvons également utiliser des fonctions C traditionnelles. C utilise des tableaux de caractères au lieu de types de chaînes.
data. Pour comparer deux chaînes, les fonctions strcmp() sont utilisées. Cette fonction en prend deux. Prenez une chaîne comme paramètre. Renvoie 0 lorsqu'ils sont identiques. Renvoie une valeur positive lorsque la première chaîne est inférieure à la deuxième chaîne La première est que lorsque la deuxième valeur est plus grande, c’est la valeur la plus grande et négative.strcmp( <first string>, <second string> )
#include <iostream> #include <cstring> using namespace std; string solve( const char* s, const char* t ){ int ret; ret = strcmp( s, t ); if( ret == 0 ) { return string(s) + " and " + string(t) + " are the same"; } else if( ret > 0 ) { return string(s) + " is larger than " + string(t); } else { return string(s) + " is smaller than " + string(t); } } int main(){ string s = "apple"; string t = "appeal"; cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl; s = "popular"; t = "popular"; cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl; s = "Hello"; t = "hello"; cout << "The result of comparison: " << solve( s.c_str() , t.c_str()) << endl; }
The result of comparison: apple is larger than appeal The result of comparison: popular and popular are the same The result of comparison: Hello is smaller than hello
Comme les données numériques, les chaînes peuvent également être comparées à l'aide d'opérateurs de comparaison. si-sinon les conditions peuvent être utilisées directement pour les chaînes en C++.
strcmp( <first string>, <second string> )
#include <iostream> using namespace std; string solve( string s, string t ){ int ret; if( s == t ) { return s + " and " + t + " are the same"; } else if( s > t ) { return s + " is larger than " + t; } else { return s + " is smaller than " + t; } } int main(){ string s = "apple"; string t = "appeal"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "popular"; t = "popular"; cout << "The result of comparison: " << solve( s, t ) << endl; s = "Hello"; t = "hello"; cout << "The result of comparison: " << solve( s, t ) << endl; }
The result of comparison: apple is larger than appeal The result of comparison: popular and popular are the same The result of comparison: Hello is smaller than hello
La comparaison de chaînes est une tâche importante que nous effectuons dans plusieurs applications. En C++, Il existe plusieurs manières différentes de comparer des chaînes. La première consiste à utiliser la méthode compare() Le contenu qui doit être traduit est : Qui prend une chaîne en entrée et vérifie la comparaison avec la chaîne actuelle. Des opérateurs tels que (==), (>), (=) peuvent être utilisés pour la comparaison de chaînes. d'autre part, Les chaînes de type C peuvent être comparées à l’aide de la fonction strcmp(). Cette fonction accepte des constantes pointeurs de caractères. La méthode compare() et la méthode strcmp() renvoient 0 lorsque les deux Lorsque la première chaîne est plus grande, un nombre positif est renvoyé ; lorsque les deux chaînes sont identiques, 0 est renvoyé. Le premier est plus petit, il renverra un nombre positif.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!