Du liest die Datei komplett ein und suchst nach dem eingegebenen Namen und vergleichst das Passwort mit dem eingegebenen Passwort. Du könntest stattdessen auch alle Daten in der Datei mit den Anmeldeinformationen in eine passende Tabelle einlesen (
std::map bzw.
std::unordered_map), das ist in deinem Fall aber nicht notwendig.
Du solltest die Anmeldeinformationen nicht so in der Datei stehen lassen und stattdessen etwas wie einen Hash davon speichern, es soll ja nicht jeder einfach die Passwörter lesen können. Aber das ist für dich momentan noch nicht so wichtig, nehme ich an.
Du solltest
std::string mit
std::getline und
std::cin.get verwenden und globale Variablen vermeiden. Der Zustand der Streams sollte überprüft werden. Also besser so:
Code:
#include <iostream>
#include <fstream>
#include <string>
void registrieren () {
std::cout << "UserID: ";
// std::string statt char[n] nutzen
std::string userid;
// oder auch std::getline
// Zustand des Streams prüfen
if (! getline (std::cin, userid)) {
std::cout << "Fehlerhafte Eingabe\nProgramm wird beendet";
return;
}
std::cout << "Password: ";
std::string password;
if (! getline (std::cin, password)) {
std::cout << "Fehlerhafte Eingabe\nProgramm wird beendet";
return;
}
// "Jedes Mal, wenn du eine Variable deklarierst und in der Zeile danach explizit initialisierst,
// anstatt gleich den passenden Konstruktor zu nehmen, weiß deine Oma, dass du sie nicht mehr lieb hast."
// also eine Zeile
std::ofstream savedata ("accs.ini", std::ios::app);
savedata << userid << "\n" << password << "\n\n";
// Ausgabe erst ganz am Ende
std::cout << "Erfolgreich registriert!" << std::endl;
std::cin.get ();
//hier wird savedata automatisch geschlossen
}
Du liest übrigens in main.cpp in eine
bool-Variable ein, wo du eine Zahl erwartest. Das solltest du ändern.