3 formas de comparar cadenas en C++

0 acciones
0
0
0
0

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 == string2

Comprueba si dos valores no son iguales:

string1 != string2
Ejemplo 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 equal

El 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 equal

El 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 (==, !=).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar