C++ segítség kérés, többi lent!?
Szeretnék egy .txt fájlból egy sort beolvasni,majd ellenőrizni,hogy az egyezik-e a console-ba beírt szöveggel.
Előre is köszi!
Igazából egy jelszó ellenőrzőt akartam írni..
.txt file-ba benne van a jelszó,onnan kiolvasni és ellenőrizni,hogy amit beírtam a console-ba az egyezik-e..
A kiolvasásnál akadtam el,hogy pont azt a sort hogy tudnám kiolvasni belőle,az ellenőrzés az menne.
Tehát több sor van a fájlban és egy adott számú sor kell neked?
Hogyan olvasol fájlból?
Az csak attól függ, hogy pont az a sor hol van a fájlban.
Egyébként nem túl biztonságos megoldás.
Azzal nincs gond,hogy az összes fájlba lévő szöveget kiírassam:
while (!file.eof())
{
string adat;
getline(file, adat);
system("COLOR d");
cout << endl;
cout << adat << endl;
}
De nekem pontosan csak az 1. sor kellene,és azt ellenőriztetni egy változóval,hogy egyeznek-e.
Na ne szivass...
Ha csak az első sor kell, akkor csak azt olvasd be, a maradék 4823-at meg ne.
A beolvasásod egyébként pedig rossz, mert az eof csak olvasási kísérlet után állítódik be, így egyszer mindenképp lefut a ciklusod.
int main(int argc, char *argv[])
{
std::ifstream ist{"test.txt"};
if (!ist)
{
std::cerr << "Hiba\n";
return 1;
}
std::string readedPassword;
std::getline(ist, readedPassword);
std::cout << "Add meg a jelszot: ";
std::string inputPassword;
std::getline(std::cin, inputPassword);
if(inputPassword == readedPassword) { std::cout << "Jo jelszo!\n"; }
else { std::cout << "Rossz jelszo!\n"; }
std::getchar();
return 0;
}
A tipp lemaradt az egész fájl beolvasására, majd kiíratására:
for (std::string s; std::getline(ist, s);) { std::cout << s << '\n'; }
ifstream file("text.txt");
cout << "Add meg a jelszavad: " << endl;
string jelszo;
cin >> jelszo;
string sor;
getline(file, sor);
if (jelszo == sor)
{
//JÓ a kód..
}
else
{
//ROSSZ
}
Ennek működnie kéne?Vagy van benne hiba?
Ajánlatos leellenőrizni sikerült megnyitni vagy nem a fájlt.
if(!file) // ha nem sikerült
{
// hiba kezelése, ha nem sikerült megnyitni
}
cin >> // ez üres karakterig olvas be a konzolból, tehát ha beírod, hogy: "alma korte" akkor csak az alma lesz a stringben. Ha az neked nem megfelelő használj itt is getline-t, de amúgy jó a kód.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!