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: 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 |
|
Kinexity |
» 2017-07-18 19:34:17 while( getline( file, line ) ) cout << line << '\n'; Ta pętla wczyta ci po kolei całą zawartość pliku, co chyba nie jest celem... |
|
FaloY Temat założony przez niniejszego użytkownika |
» 2017-07-18 19:40:25 Nawet jeśli użyję To jest ta sama sytuacja ;/ |
|
Kinexity |
» 2017-07-18 19:41:25 Plik zawiera same loginy, czy hasła też? |
|
FaloY Temat założony przez niniejszego użytkownika |
» 2017-07-18 19:42:13 Zawartość notatnika: ---======LoginDataBase---======= Login:FaloY Hasło:test EDIT: 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;
|
|
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. |
|
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: #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(); 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; } } }
|
|
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 : #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(); 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; } }
|
|
« 1 » 2 |