Autor Tema: Comparar dos string en C++ (comparación de palabras) búsqueda en ficheros  (Leído 25874 veces)

ruben04

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola! ¿me podrian ayudar con este tema?

Estoy tratando de buscar dentro de un fichero que contiene nombres y contraseñas
y yo quiero buscar el nombre por medio de la clave pero no me sale.
 
Me mustra el pasword que ingreso pero no entra al if

Si alguien me lo pudiera corregir...

Gracias

Código: [Seleccionar]
void leerPasw(char frase[])
{
    int i=0;
    cout.flush();

    do
    {
        frase[i] = (unsigned char)getch();

        if(frase[i]!=8)  // no es retroceso
        {
            cout << '*';  // muestra por pantalla
            i++;
        }
        else if(i>0)    // es retroceso y hay caracteres
        {
            cout << (char)8 << (char)32 << (char)8<<(char)13;
            i--;  //el caracter a borrar e el backspace
        }
        cout.flush();

    }while(frase[i-1]!=13); // si presiona ENTER
   
    cout << endl;
}

int main()
{
    char pasw[10];
    char nombre[20];
    char buscpasw[10];
    ifstream abrir;
    string encabezado;
    abrir.open("datos.txt");
    getline(abrir,encabezado);
    cout <<" Ingrese password:\n ";
    leerPasw(buscpasw);
    abrir>>nombre;
    cout<<endl;
    cout<<"\nMOSTRAR PASWORD: "<<buscpasw;
    while(!abrir.eof())
    {
    abrir>>pasw;
    if(pasw==buscpasw)
    {
    cout<<"\nBIEN VENIDO";
    cout<<"\n"<<nombre;
    system("pause");
   
}
else
{
cout<<"\n pasword no existe ";
}
abrir>>nombre;
}
abrir.close();
cout<<"\n\n";
system("pause");
    return 0;
}
« Última modificación: 03 de Agosto 2017, 18:14 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola ruben04, para escribir en los foros es conveniente que leas el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0, que pongas un título más descriptivo a una consulta, que expliques con mayor detenimiento, y que pegues el código completo con el que estás trabajando. En este caso también sería conveniente un ejemplo del contenido que puedas tener en un fichero "datos.txt"

El problema puede derivar del tipo de variables que estás usando y de la forma de comparar strings.

Para comparar strings debe usarse la función compare, que dispone de diferentes signaturas.

Ejemplo explicativo sobre la comparación de strings en C++:

Código: [Seleccionar]
// comparing apples with apples
#include <iostream>
#include <string>

int main ()
{
  std::string str1 ("green apple");
  std::string str2 ("red apple");

  if (str1.compare(str2) != 0)
    std::cout << str1 << " is not " << str2 << '\n';

  if (str1.compare(6,5,"apple") == 0)
    std::cout << "still, " << str1 << " is an apple\n";

  if (str2.compare(str2.size()-5,5,"apple") == 0)
    std::cout << "and " << str2 << " is also an apple\n";

  if (str1.compare(6,5,str2,4,5) == 0)
    std::cout << "therefore, both are apples\n";

  return 0;
}

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".