elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Comparar valores String o Char [C++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Comparar valores String o Char [C++]  (Leído 6,894 veces)
zikotik

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Comparar valores String o Char [C++]
« en: 15 Noviembre 2014, 06:35 am »

Hace unos días estaba haciendo una apliación en la que necesitaba en cierta parte del proceso, comparar una variable tipo string con una variable tipo char tanto en tamaño como en valor, pero no debía usar sentencias for ni while. Así y entonces, desarrollé esta pequeña función que quizá le pueda ser útil a aquellos que recién empiezan.

Código
  1. #include <cstring>
  2.  
  3. bool strchk(string a, string b){
  4. if(a.size() == b.size() && a == b){
  5. return 1;
  6. } return 0;
  7. }

La forma de uso sería la siguiente...

Código
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. bool strchk(string a, string b){
  6. if(a.size() == b.size() && a == b){
  7. return 1;
  8. } return 0;
  9. }
  10.  
  11. int main(int argc, char *argv[]){
  12. if(strchk(argv[1], argv[2]) == 1){
  13. cout << "Son iguales";
  14. } else {
  15. cout << "Son desiguales";
  16. }
  17. }

En una consola de comandos se ejecutaría de la siguiente manera...

Código
  1. app.exe texto texto
  2. Son iguales
  3.  
  4. app.exe texto palabra
  5. Son desiguales

Si modificamos un poco el main, podemos usarlo para crear un sistema de inicio de sesión (por ejemplo).

Código
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. bool strchk(string a, string b){
  6. if(a.size() == b.size() && a == b){
  7. return 1;
  8. } return 0;
  9. }
  10.  
  11. int main(int argc, char *argv[]){
  12. char pwd[9] = "1a2b3c4d";
  13. if(strchk(argv[1], pwd) == 1){
  14. cout << "La clave es correcta";
  15. } else {
  16. cout << "La clave es incorrecta";
  17. }
  18. }


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Comparar valores String o Char [C++]
« Respuesta #1 en: 15 Noviembre 2014, 15:55 pm »

En tu programa cuando se llama a la función "strchk" sus argumentos (las cadenas "a la C") se utilizan para inicializar los parámetros correspondientes (objetos de la clase string). Eso lleva a que la función no es necesaria ya que se pueden crear objetos anónimos de dicho tipo realizando la comparación directamente.

Un ejemplo para explicarlo mejor:
Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. #include <string>
  6. using std::string;
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.   if (string(argv[1]) == string(argv[2]))
  11.      cout << "Son iguales" << endl;
  12.   else
  13.      cout << "Son desiguales" << endl;
  14.  
  15.   return 0;
  16. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
zikotik

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Comparar valores String o Char [C++]
« Respuesta #2 en: 16 Noviembre 2014, 02:29 am »

El problema es que cuando quise hacerlo de manera directa, el compilador me tiraba error y no me dejaba compilarlo, entonces tuve que hacer de manera obligada, la función "strchk" (utilizo devcpp).
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Comparar valores String o Char [C++]
« Respuesta #3 en: 16 Noviembre 2014, 02:41 am »

¿A que te refieres con "cuando quise hacerlo de manera directa, el compilador me tiraba error"?

Por cierto no es necesario incluir el encabezado <cstring>, en su lugar debes incluir <string> para tener acceso a la clase del mismo nombre.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
zikotik

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Comparar valores String o Char [C++]
« Respuesta #4 en: 16 Noviembre 2014, 02:58 am »

A veces cuando quiero hacer algún código, el compilador me tira error, entonces tengo que buscar una manera alterna de hacer las cosas. Debe ser un error de instalación de las librerías o algo así posiblemente.
En línea

zShackra

Desconectado Desconectado

Mensajes: 59


Ver Perfil WWW
Re: Comparar valores String o Char [C++]
« Respuesta #5 en: 16 Noviembre 2014, 03:02 am »

A veces cuando quiero hacer algún código, el compilador me tira error, entonces tengo que buscar una manera alterna de hacer las cosas. Debe ser un error de instalación de las librerías o algo así posiblemente.

Hola, ¿le has dado una oportunidad a Qt Creator, Visual Studio o Code::Blocks?...
En línea

zikotik

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Comparar valores String o Char [C++]
« Respuesta #6 en: 16 Noviembre 2014, 04:29 am »

Probé el Visual Studio y me resultó incómodo, el Qt Creator no lo tenía conocido y acerca del Code::Blocks, oí muchas notas positivas al respecto, pero nunca lo probé.
En línea

zShackra

Desconectado Desconectado

Mensajes: 59


Ver Perfil WWW
Re: Comparar valores String o Char [C++]
« Respuesta #7 en: 16 Noviembre 2014, 05:07 am »

Probé el Visual Studio y me resultó incómodo, el Qt Creator no lo tenía conocido y acerca del Code::Blocks, oí muchas notas positivas al respecto, pero nunca lo probé.

Pues bueno, el Visual Studio por incómodo que sea, tiene el mejor depurador que he probado en sistemas NT, además de ser un entorno muy pero muy completo...

Code::Blocks es muy ligero y viene casi completamente configurado, aunque usa MinGW como compilador (al igual que QtCreator y DevC++), honestamente no les veo nada malo a los tres IDE, Visual Studio usa el compilador de Microsoft y aún así desenvuelve un trabajo espectacular.

Te sugiero darle una oportunidad al menos a Code::Blocks, creo y sin temor a equivocarme, que esos problemas que tienes con DevC++ desaparecerían con IDE's más trabajados (sin quitarle su mérito a Orwell, pero nada como un proyecto desarrollado por una comunidad y/o empresa).
« Última modificación: 23 Noviembre 2014, 07:12 am por zShackra » En línea

zikotik

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Comparar valores String o Char [C++]
« Respuesta #8 en: 16 Noviembre 2014, 12:43 pm »

Qué ironía, empezó siendo un aporte, y terminó siendo una solución fomentada.
Borré el DevCpp, instalé el Code::Blocks y no tuve más problemas al compilar.

Gracias por tu solución zShackra!
En línea

zShackra

Desconectado Desconectado

Mensajes: 59


Ver Perfil WWW
Re: Comparar valores String o Char [C++]
« Respuesta #9 en: 16 Noviembre 2014, 20:39 pm »

Qué ironía, empezó siendo un aporte, y terminó siendo una solución fomentada.
Borré el DevCpp, instalé el Code::Blocks y no tuve más problemas al compilar.

Gracias por tu solución zShackra!

Me alegra que te haya servido de algo... DevC++ es un IDE bastante deficiente.
« Última modificación: 23 Noviembre 2014, 07:12 am por zShackra » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[batch] comparar una variable con varios valores « 1 2 »
Scripting
moikano→@ 13 17,305 Último mensaje 22 Diciembre 2010, 19:25 pm
por moikano→@
[Solucionado] Comparar un String con cada una de las partes de otro String « 1 2 »
.NET (C#, VB.NET, ASP)
Segurida 13 12,451 Último mensaje 14 Mayo 2011, 18:52 pm
por Segurida
Comparar dos Char por medio de un If
Programación C/C++
Hack-11 5 67,124 Último mensaje 21 Octubre 2011, 07:15 am
por s00rk
Al comparar dos char salta error.
Programación C/C++
Jucazuor 3 3,575 Último mensaje 12 Agosto 2017, 23:45 pm
por ivancea96
Herramienta para buscar y comparar valores en ficheros de datos binarios.
Ingeniería Inversa
xustyx 9 6,128 Último mensaje 12 Mayo 2018, 13:13 pm
por xustyx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines