Está en la página 1de 6
reisr019 CComparar cadenas en C++ sin importar mayisculas 0 mindsculas - micheletorres Comparar cadenas en C++ sin importar mayUsculas o minusculas 8 min de lectura {Cémo comparar cadenas en C++? Para comparar dos cadenas en C++ se puede hacer uso de dos funciones distintas, “strnemp" y “stremp' las cuales se encuentran en la biblioteca por lo que seré necesario incluirla, La diferencia entre estas funciones es que la. funcién “strcmp” compara las cadenas hasta que un caracter sea diferente o hasta que se termine la cadena, y la funcién “strnemp" compara las cadenas hasta que un caracter sea diferente, o se termine la cadena, o haste que llegue al numero de caracteres que se queria comparar (el cual se determina al hacer uso de ésta funcién), lo que pase primero. La forma de hacer uso de estas funciones es la siguiente: 4 stronp( nondecadenat, nondecadena2 ) siendo la primer cadena mencionade la que se usara como base para compararla otra. Al hacer uso de éstas funciones los valores que nos devuelve son nmeros, los cuales pueden sero, Lo-l. + +1: si el valor devuelto es igual a menos unos quiere decir que la cadena tiene un valor menor, 0 que va antes alfabéticamente con respecto a la cadena con la que se comparé. + 0: si el valor devuelto es cero quiere decir que las cadenas son iguales. + 1: si el valor devuelto es igual a menos unos quiere decir que la cadena tiene un valor mayor, 0 que va después alfabéticamente con respecto a la cadena con la que se comparé. Ejemplo de comparacién de cadenas con strcmp Para entender esto mejor a continuacién hay un ejemplo de un cédigo para comparar dos cadenas, con la funcién "strcmp". tps: blog micholletorres.mxdcomparar-cadenas-sin-mportar-mayusculas-t-minusculas! 16 reisr019 CComparar cadenas en C++ sin importar mayisculas 0 mindsculas - micheletrres 2 include 3 Finclude //Inportante agregar esta biblioteca para hacer uso de Las functones 5 using narespace std; 6 7 Ane main 0 { /oeci: char cadenat{] = “nanzana har cadenaz[] = “nanzano 10s las cade //Mostranos el nonbre de las cadenas al usuario ceuut << "La cadena uno se Uana: " <= cadenat; cout << “La cadena dos se Ulana: * << cadenad} ‘//Comparando cadenas cout < ceadena2); ceaut << "Conparando cadena 2 con respecto a cadena 2, es igual a cadena1); "conparando cadena 1 con respecto 3 cadena 2, es igual a: " << strenp(cadenat, "ce stremp(cadena?, return y entonces el usuario al ejecutar este programa se vera asi \Vernos que cuando compara la cadena 1 con respec “CiUses Sag) DeatopINoes pecaderascaseranee” 2 la 2 nos arroja el valor de -1, esto es por manzana (cadena) va antes alfabéticamente que manzano (cadena2); y cuando compara la cadena 2 con respecto a la 1 nos da el valor de 1 porque manzano (cadena2) va después alfabéticamente que manzana (cadena), Por el contrario si hubiéramos puesto que ambas cadenas se llaman manzana, al haber hecho la comparacién hubiéramos obtenido el valor de 0, porque manzana es lo mismo que manzana. Ejemplo de comparacién de cadenas con stomp, ‘Ahora analicemos como funciona “strenmp". Como ya se mencioné anteriormente la diferencia de esta funcidn con "strcmp" es que aqui vamos a decirle hasta que caracter quiero que haga la comparacién, using narespace std; oeclaranes tas cade har cadenai{] char cadena2{] orres.mxlcomparar-cadonas-sin-mporia-mayusculas-n-minusculas! 216 include include //Inportante agregar esta biblioteca para hacer uso de las funciones Ant main 0 { reisr019 CComparar cadenas en C++ sin importar mayisculas 0 mindsculas - micheletrres 21 /MMostranos el nonbre de las cadenas al usuario 52, enut << "La cadena uno se lana: " << cadenat; 13. cout << “La cadena dos se Llama: * << cadena2; ss //Canparando cadenas con la funcisn strnenp 5 eautt <= "Conparando cadena 1 con respecto 3 cadena 2, es igual a: " << strncnp(cadenat, 7 eadena2, 2); tg //#L nunero que esta despuss de tas cadenas a conparar indica hasta que caracter se van 92 conparar 20 a, fetus: Al ejecutar este programa veremos que nos arroja un 0, ya que ahi esta indicade que haga la comparacién hasta el segundo caracter, y en la cadena 1 y 2 los primeros dos caracteres son iguales, es por eso que el valor es cero, porque hasta donde esta indicada la comparacién las cadenas son iguales. Convertir las cadenas a caracteres iguales Como sabemos en el cédigo acil los caracteres "a" y “A” son caracteres diferentes, por lo que si en un programa tenemos una cadena que se llama “DelFin” y otra que se llama “delfin” son cadenas distintas aunque nosotros mismo, ya que se van a tomar como caracteres diferentes. Por lo tanto si queremos comparar cadenas sin Importar las maylsculas ni las mindsculas debemos convertirlas a mayuisculas o a minuisculas. Se puede clegir a que es lo que se quiere convertir si a mayusculas @ minisculas; si se quiere convertir a maydsculas se utiliza la funclén “toupper” y si se quiere convertir minisculas se utiliza la funcién “tolower”. Para hacer uso de estas funciones necesitamos la biblioteca , Ademés junto con estas funciones usaremos un ‘for’ el cual le va a indicar que vaya convirtiendo cada caracter de la cadena a maydsculas © a mindsculas (dependiendo de la funcién),. La manera de convertir las cadenas es la siguiente: 1 for ( i= 9; 4 < strlen(cadena); tr) 2 eadena[] = toupper eadenalt] ): 3) Ejemplo A continuacién un ejemplos de cédigo para convertirlas a un mismo caracter: include include //Inportante agregar esta biblioteca para usar Las Functones 1 2 a 4 using narespace std; 5 int main 0 { hitpstlog.michelletorres mxlcomparar-cadenas-sn-importar-mayusculas-n-minusculas! a6 reisr019 tps. mich CComparar cadenas en C++ sin importar mayisculas 0 mindsculas - micheletrres //oectacando cadenas a ints 9 char cadenai{] = "Hole"; 10, char cadenaz[] = "Hola sz. //Mostrando cadenas 2 usuario ceuut << “cadena es: " << cadenat << endl; cout << “cadenaz e: << eadena2 << endl; [convirtiends cadenas fr for (A= 03 L < strlen(eadenat) ; t+) to ‘cadenai[t] » toupper(cadenas[t]); sD je FOF C t= 0; t < strlen(cadenaa) 5 U1) ¢ e ‘cadena2{t] = toupper(cadena2[t]): zn) // Aqui se usa Ta Funcisn tovpper, pero si se quiere convertir a miniseu ‘enves de toupper ando las nuevas cadenas adenat ahora es: " << cadenat << endl; 27 gout << "Cadena? ahora es: " << cadena? << end 22 return © 314 y entonces si ejecutemos el programa el usuario vera esto: “Cilaen Sac)Dekiog Noes capetel Cadena aupperene y si utilizamos la funcién “tolower" entonces vera esto: Ty "ClsesStog Desk Nowa cxpca\Cadeovpper one Comparar cadenas sin importar mayusculas ni minusculas Anteriormente en este documento ya se explicé cémo se comparan dos cadenas, y cémo se convierten las cadenas a maylsculas o 2 minusculas, este ultimo es importante ya que si queremos comparar dos cadenas sin importar mayiisculas ni mindsculas lo primero que se debe de hacer es convertir éstas a un solo tipo, porque sino se hace esto entonces al compararlas si dicen lo mismo pero una en mayisculas y otra en mindsculas (0 ‘evuelto) marcara que las cadenas son diferentes; es por eso que primero tenemos que hacer esta conversién, para que asi posteriormente se puedan compara. Un ejemplo de lo mencionado anteriormente es el siguiente 1res.malcomparar-cadonas-sin-imporlar-mayusculas-n-minusculas! 46 reisr019 CComparar cadenas en C++ sin importar mayisculas 0 mindsculas - micheletrres 1) etneude ctstreane 2 nce sestringe 3 {wstngnarespce st; Bart main 0 1 [peclarand cadenss thar cadeont) = "Vota 8 Ghar cadenaz{] = “haut Mh Gait << "La cadena une se Ulan: * //Inctuinos esta biblioteca para poder conpararlas 3 include //Incluinos esta biblioteca para poder convertir a nayisculas y niniscula 6 using narespace std; 8 Ant natn Of 9 //oeclaranos cadenas 2 mel ti char cadenatf] = "role fz char cadena2[] = "hola"; 2 U/iostranos cadenas orres.mxlcomparar-cadonas-sin-mporia-mayusculas-n-minusculas! 56 reisr019 CComparar cadenas en C++ sin importar mayisculas 0 mindsculas - micheletrres 5 eaut << "cadenat es: " << cadenat << endl; 16 eut << “cadenad es: “ <= cadenad <= endl 18 [eanvertios cadenas 4 nayiscutas 9 For (tao te serlenteagenat) 3 6) ¢ x cadenes(%] = tooper(eadenatCtD)i a 5 2 FOr (har 4 = 85 L< strtenCcaden2y 5 40) ( bs codenaa{t] = toner (eadenaeteD: me) taut << "Corparando Lo cadena 8 con respecto 2 Ua 2,8 Lgl a: * ce strenteatenat, € 2 dene) aut << "Corparand Ta codes 2 con respecto a 181, es gust a: * << strro(cadense, ¢ ® adenet return ©: Y ahora los valores obtenidos serian estos: “CAVsesSta Desktop Nueva carpal Cadenascompare cadenas ene Ahora si da 0 porque ya se convirtié a maydsculas y ahora ya no encuentra caracteres diferentes. Finalmente con este cédigo ya obtenemos lo que queremos, comparar cadenas sin importas maydsculas ni mindsculas, Stacy f orres.mxlcomparar-cadonas-sin-mporia-mayusculas-n-minusculas! 6

También podría gustarte