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
Conceptos básicos de ciberseguridad que todo fundador debe conocer

Conceptos básicos de ciberseguridad que todo fundador debe conocer

En el mundo digital actual, la ciberseguridad es fundamental para los fundadores de startups. Este artículo explora los aspectos básicos, como la protección de activos digitales, la autenticación, la protección contra amenazas y la creación de un plan de respuesta a incidentes. Al comprender estos conceptos básicos, los fundadores pueden proteger sus negocios de las amenazas.