Introducción
En este artículo, aprenderá a comparar cadenas en C++.
1. Uso de la función strcmp() en C++
C++ String cuenta con funciones integradas para manipular datos de cadenas. La función strcmp() es una función de la biblioteca de C que permite comparar dos cadenas lexicográficamente.
- La cadena de entrada debe ser una matriz de caracteres de cadenas de estilo C.
- strcmp() también compara cadenas en un formato que distingue entre mayúsculas y minúsculas.
int strcmp(const char *str1, const char *str2);Esta función devuelve los siguientes valores dependiendo de los elementos coincidentes:
- Devuelve 0 si ambas cadenas son iguales.
- Si el valor del carácter de la primera cadena es menor en comparación con el de la segunda cadena de entrada, devuelve < 0 (menor que cero).
- Cuando la segunda cadena en la comparación es más grande, los resultados son > 0 (mayor que cero).
Ejecuta el siguiente código:
#include <iostream>
#include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}Esto produce el siguiente resultado:
OutputString 1: String Match
String 2: String Unmatch
The input strings are not equal.strcmp(str_inp1, str_inp2) da como resultado -9. Los valores de str_inp1 y str_inp2 son diferentes.
Ejecuta el siguiente código:
#include <iostream>
#include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}Esto produce el siguiente resultado:
Output
String 1: String Match
String 2: String Match
Both the input strings are equal.strcmp(str_inp1, str_inp2) devuelve 0. Los valores de str_inp1 y str_inp2 son los mismos.
2. Uso de la función compare() en C++
C++ tiene una función compare() incorporada para comparar dos cadenas.
La función compare() compara dos cadenas:
int compare (const string& string-name) const;Esta función devuelve los siguientes valores dependiendo de los elementos coincidentes:
- Devuelve 0 si ambas cadenas son iguales.
- Si el valor del carácter de la primera cadena es menor en comparación con el de la segunda cadena de entrada, devuelve < 0 (menor que cero).
- Cuando la segunda cadena en la comparación es más grande, los resultados son > 0 (mayor que cero).
Ejecuta el siguiente código:
#include <iostream>
int main()
{
std::string str_inp1("String Match");
std::string str_inp2("String Match");
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
int res = str_inp1.compare(str_inp2);
if (res == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else if (res < 0)
std::cout << "\nString 1 is smaller as compared to String 2." << std::endl;
else
std::cout << "\nString 1 is greater as compared to String 2." << std::endl;
}En este ejemplo, str_inp1 y str_inp2 se comparan con compare():
Output
String 1: String Match
String 2: String Match
Both the input strings are equal.Ambas cadenas son léxicamente idénticas, por lo que la función devuelve 0.
Ejecuta el siguiente código:
#include <iostream>
int main()
{
std::string str_inp0("String Match");
std::string str_inp1("String Match");
std::string str_inp2("String Unmatch");
std::cout << "String 1: " << str_inp1 << std::endl;
if (str_inp1.compare(str_inp0) == 0)
std::cout << "\nStrings are equal." << std::endl;
else
std::cout << "\nStrings are not equal." << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (str_inp2.compare(str_inp0) == 0)
std::cout << "\nStrings are equal." << std::endl;
else
std::cout << "\nStrings are not equal." << std::endl;
}En este ejemplo, str_inp0 se compara con str_inp1:
Output
String 1: String Match
Strings are equal.Luego, str_inp0 se compara con str_inp2:
Output
String 2: String Unmatch
Strings are not equal.Este código compara directamente una cadena con otra cadena de entrada con la función compare().
3. Operadores relacionales en C++
Los operadores relacionales de C++ como == (igual) y != (no igual) pueden ser útiles para comparar cadenas.
Comprobar si dos valores son iguales:
string1 == string2Comprueba si dos valores no son iguales:
string1 != string2Ejemplo 1: Uso del operador == de C++
Ejecuta el siguiente código:
#include <iostream>
int main()
{
std::string str_inp1;
std::string str_inp2;
std::cout << "Enter the String 1:\n";
std::cin >> str_inp1;
std::cout << "Enter the String 2:\n";
std::cin >> str_inp2;
if (str_inp1 == str_inp2)
std::cout << "Strings are equal" << std::endl;
else
std::cout << "Strings are not equal" << std::endl;
}Proporcione los valores "Cadena 1" y "Cadena 2":
Enter the String 1:
DigitalOcean
Enter the String 2:
digitalocean
Strings are not equalEl código compara dos cadenas con ==.
Ejemplo 2: Uso del operador != de C++
Ejecuta el siguiente código:
#include <iostream>
int main()
{
std::string str_inp1;
std::string str_inp2;
std::cout << "Enter the String 1:\n";
std::cin >> str_inp1;
std::cout << "Enter the String 2:\n";
std::cin >> str_inp2;
if (str_inp1 != str_inp2)
std::cout << "Strings are not equal" << std::endl;
else
std::cout << "Strings are equal" << std::endl;
}Proporcione los valores "Cadena 1" y "Cadena 2":
Enter the String 1:
DigitalOcean
Enter the String 2:
DigitalOcean
Strings are equalEl código compara dos cadenas con !=.
Resultado
En este artículo, aprendiste sobre los métodos de comparación de cadenas en C++. Esto incluía la función String strcmp(), la función integrada compare() y los operadores relacionales (==, !=).









