Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Porównywanie strignów(?)

Ostatnio zmodyfikowano 2017-07-19 00:09
Autor Wiadomość
FaloY
Temat założony przez niniejszego użytkownika
Porównywanie strignów(?)
» 2017-07-18 19:26:51
Witam, (jak w temacie) przeszukałem całe google i nie mogę znaleźć odpowiedzi na moje pytanie, jak porównać stringi z notatnika? Mam np. Login: *LOGIN*
                                                                                                                                         Hasło: *PASSWORD*
KOD:
C/C++
void LoginDataBase()
{
    fstream file( "LoginDataBase.txt" );
    string line;
    while( getline( file, line ) )
         cout << line << '\n';
   
    if( line == strLogin )
    {
        cout << "Login poprawny!";
    }
    else
    {
        cout << "Wpisz poprawny login!";
    }
}

Gdy wpisuje w konsoli: *LOGIN* to nie bierze inforamcji z notatnika. Myślę, że dość jasno to opowiedziałem :D, Pozradwaim

                    
P-163400
Kinexity
» 2017-07-18 19:34:17
C/C++
while( getline( file, line ) )
     cout << line << '\n';
Ta pętla wczyta ci po kolei całą zawartość pliku, co chyba nie jest celem...
P-163401
FaloY
Temat założony przez niniejszego użytkownika
» 2017-07-18 19:40:25
Nawet jeśli użyję
C/C++
getline( file, line )

To jest ta sama sytuacja ;/
P-163403
Kinexity
» 2017-07-18 19:41:25
Plik zawiera same loginy, czy hasła też?
P-163404
FaloY
Temat założony przez niniejszego użytkownika
» 2017-07-18 19:42:13
Zawartość notatnika:

---======LoginDataBase---=======
Login:FaloY
Hasło:test

EDIT:

C/C++
if( password1 == password2 )
{
    cout << "Zarejestrowano pomyslnie! " << endl;
   
    fstream LoginDataBase;
    LoginDataBase.open( "LoginDataBase.txt", ios::out | ios::app );
   
    LoginDataBase << "---======LoginDataBase---=======" << endl;
    LoginDataBase << "Login:" << strLogin << endl;
    LoginDataBase << "Hasło:" << password2 << endl;
P-163405
Kinexity
» 2017-07-18 19:46:47
Wywal ten tytuł z pliku, ponieważ jest tylko ozdobnikiem dla ciebie, ale utrudnia działanie programu. Z "Login:" i "Hasło:" zrób to samo z tego samego powodu. Hasło i login trzymaj w oddzielnych plikach.
P-163407
FaloY
Temat założony przez niniejszego użytkownika
» 2017-07-18 19:57:02
Zrobiłem jak napisałeś wyżej i nadal nie działa dam cały kod programu:

C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <istream>
#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>

using namespace std;

string password1, password2;
string strLogin;
int registerOut = 0;

void LoginDataBase()
{
    fstream file( "LoginDataBaseStrLogin.txt" );
    string line;
    getline( file, line );
    std::cout << line << '\n';
    if( line == strLogin )
    {
        cout << "Login poprawny!";
    }
    else
    {
        cout << "Wpisz poprawny login!";
    }
}

int main()
{
    menu:
    int wybor = 0;
    cout << "---======MenuDataBase======---" << endl;
    cout << "[1] Zaloguj." << endl;
    cout << "[2] Zarejestruj." << endl;
    cin >> wybor;
    switch( wybor )
    {
    case 1:
        {
            cout << "Wpisz Login: ";
            cin >> strLogin;
            cout << "Wpisz Haslo: ";
            cin >> password2;
            LoginDataBase();
            break;
        case 2:
            while( registerOut < 3 )
            {
                cout << "---======RegisterDataBase======---" << endl;
                cout << "Nazwa uzytkownika: ";
                cin >> strLogin;
                cout << "Haslo: ";
                cin >> password1;
                cout << "Powtorz haslo: ";
                cin >> password2;
               
                if( password1 == password2 )
                {
                    cout << "Zarejestrowano pomyslnie! " << endl;
                   
                    fstream LoginDataBaseStrLogin;
                    LoginDataBaseStrLogin.open( "LoginDataBaseStrLogin.txt", ios::out | ios::app );
                   
                    LoginDataBaseStrLogin << "Login:" << strLogin << endl;
                   
                    LoginDataBaseStrLogin.close();
                    //TERAZ HASLo
                    fstream LoginDataBasePassword2;
                    LoginDataBasePassword2.open( "LoginDataBasePassowrd2.txt", ios::out | ios::app );
                   
                    LoginDataBasePassword2 << "Haslo: " << password2 << endl;
                   
                    LoginDataBasePassword2.close();
                    goto menu;
                }
                else
                {
                    cout << "Hasla sie nie zgadzaja!" << endl;
                }
            }
            break;
        }
    }
}
P-163409
Gravity
» 2017-07-18 20:29:07
Po co Ci te goto ? Zrób normalną pętlę.

I musisz dodać bibliotekę <fstream> bo w kodzie tego nie masz.

Tak samo po co Ci <conio.h> i <windows.h> skoro żadnych funkcji z tych bibliotek nie używasz.

case 2 jest pętlą nieskończoną bo nigdzie nie inkrementujesz registerOut.Jeśli dobrze rozumiem to użytkownik powinien mieć 3 możliwości do rejestracji , tak ?

Wywala Ci że login jest niepoprawny z tego powodu , że w pliku masz Login:<loginużytkownika> więc wczytuje całą linię , a nie tylko <loginużytkownika>.

Wywal to Login:.Wtedy powinno działać.

Masz tutaj kod :

C/C++
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

string password1, password2;
string strLogin;

void LoginDataBase()
{
    fstream file( "LoginDataBaseStrLogin.txt", ios::in );
   
    if( file )
    {
        string line;
       
        bool poprawny = false;
       
        while( getline( file, line ) && !poprawny )
        {
            if( line == strLogin )
            {
                cout << "Login poprawny!" << endl;
                poprawny = true;
            }
        }
       
        if( !poprawny )
             cout << "Nie poprawny login " << endl;
       
    }
   
    else
    {
        cout << "Nie udalo sie otworzyc pliku !" << std::endl;
    }
}

int main()
{
    char answ = 'y';
   
    while( answ == 'y' || answ == 'Y' )
    {
        int wybor = 0;
        cout << "---======MenuDataBase======---" << endl;
        cout << "[1] Zaloguj." << endl;
        cout << "[2] Zarejestruj." << endl;
        cin >> wybor;
       
        switch( wybor )
        {
        case 1:
            {
                cout << "Wpisz Login: ";
                cin >> strLogin;
                cout << "Wpisz Haslo: ";
                cin >> password2;
                LoginDataBase();
                break;
            }
           
        case 2:
            {
                cout << "---======RegisterDataBase======---" << endl;
                cout << "Nazwa uzytkownika: ";
                cin >> strLogin;
                cout << "Haslo: ";
                cin >> password1;
                cout << "Powtorz haslo: ";
                cin >> password2;
               
                if( password1 == password2 )
                {
                    cout << "Zarejestrowano pomyslnie! " << endl;
                   
                    fstream LoginDataBaseStrLogin;
                    LoginDataBaseStrLogin.open( "LoginDataBaseStrLogin.txt", ios::out | ios::app );
                   
                    if( LoginDataBaseStrLogin )
                    {
                        LoginDataBaseStrLogin << strLogin << endl;
                    }
                   
                    else
                    {
                        std::cout << "Nie udalo sie otworzyc pliku !" << std::endl;
                    }
                   
                    LoginDataBaseStrLogin.close();
                    //TERAZ HASLo
                   
                   
                    fstream LoginDataBasePassword2;
                   
                    if( LoginDataBasePassword2 )
                    {
                        LoginDataBasePassword2.open( "LoginDataBasePassowrd2.txt", ios::out | ios::app );
                        LoginDataBasePassword2 << password2 << endl;
                    }
                   
                    else
                    {
                        std::cout << "Nie udalo sie otworzyc pliku !" << std::endl;
                    }
                   
                    LoginDataBasePassword2.close();
                   
                }
               
                else
                {
                    cout << "Hasla sie nie zgadzaja!" << endl;
                }
               
                break;
            }
        }
       
        cout << "Czy chcesz kontynuowac ? y/Y n/N : ";
        cin >> answ;
       
    }
}
P-163415
« 1 » 2
  Strona 1 z 2 Następna strona