Autor
|
Tema: Comparar valores String o Char [C++] (Leído 6,894 veces)
|
zikotik
Desconectado
Mensajes: 59
|
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. #include <cstring> bool strchk(string a, string b){ if(a.size() == b.size() && a == b){ return 1; } return 0; }
La forma de uso sería la siguiente... #include <iostream> #include <cstring> using namespace std; bool strchk(string a, string b){ if(a.size() == b.size() && a == b){ return 1; } return 0; } int main(int argc, char *argv[]){ if(strchk(argv[1], argv[2]) == 1){ cout << "Son iguales"; } else { cout << "Son desiguales"; } }
En una consola de comandos se ejecutaría de la siguiente manera... app.exe texto texto Son iguales app.exe texto palabra Son desiguales
Si modificamos un poco el main, podemos usarlo para crear un sistema de inicio de sesión (por ejemplo). #include <iostream> #include <cstring> using namespace std; bool strchk(string a, string b){ if(a.size() == b.size() && a == b){ return 1; } return 0; } int main(int argc, char *argv[]){ char pwd[9] = "1a2b3c4d"; if(strchk(argv[1], pwd) == 1){ cout << "La clave es correcta"; } else { cout << "La clave es incorrecta"; } }
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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: #include <iostream> using std::cout; using std::endl; #include <string> using std::string; int main(int argc, char *argv[]) { if (string(argv[1]) == string(argv[2])) cout << "Son iguales" << endl; else cout << "Son desiguales" << endl; return 0; }
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
Mensajes: 59
|
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
Mensajes: 1.639
|
¿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
Mensajes: 59
|
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
|
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
Mensajes: 59
|
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
|
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
Mensajes: 59
|
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
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[batch] comparar una variable con varios valores
« 1 2 »
Scripting
|
moikano→@
|
13
|
17,305
|
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
|
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
|
21 Octubre 2011, 07:15 am
por s00rk
|
|
|
Al comparar dos char salta error.
Programación C/C++
|
Jucazuor
|
3
|
3,575
|
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
|
12 Mayo 2018, 13:13 pm
por xustyx
|
|