Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: ruben04 en 25 de Julio 2017, 20:34

Título: Comparar dos string en C++ (comparación de palabras) búsqueda en ficheros
Publicado por: ruben04 en 25 de Julio 2017, 20:34
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;
}
Título: Re:Comparar dos string en C++ (comparación de palabras) búsqueda en ficheros
Publicado por: Alex Rodríguez en 03 de Agosto 2017, 18:15
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