Odczyt danych z pliku

0

Witam, stworzyłem prosty panel logowania, w którym po pomyślnym zalogowaniu można dodać profil studenta (imię, nazwisko oraz pesel). Nie wiem jednak w jaki sposób odczytać wprowadzone dane... Pomożecie?

#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <fstream>

using namespace std;
string login, haslo;
string imie, nazwisko,pesel;
char wybor;
int main()
{

   do
    {
    cout<<"-----------------------------ZALOGUJ SIE DO SYSTEMU-----------------------------"<<endl;
    cout << "Podaj login: ";
    cin>>login;
    cout << "Podaj haslo: ";
    cin>>haslo;

    if(login!="admin" || haslo!="janek")
    {
        cout<<"Niepoprawny login lub haslo!"<<endl;
    }
    getchar();getchar();
    system("cls");
    }while(login!="admin" || haslo!="janek");
    system("cls");

for(;;)
{

  cout<<"----------------------------PANEL ADMINISTRATORA--------------------------------"<<endl;
  cout<<endl<<"1. Dodaj profil studenta"<<endl;
   cout<<"2. Lista studentow"<<endl;
     cout<<"3. Wyjscie"<<endl;

    wybor = getch();

  switch(wybor)
  {
  case '1':
      {
        system("cls");
        cout<<"Imie: "; cin>>imie;
        cout<<"Nazwisko: "; cin>>nazwisko;
        cout<<"PESEL: "; cin>>pesel;

    fstream plik;
    plik.open("profile.txt", ios::out | ios::app);

    plik<<imie<<endl;
    plik<<nazwisko<<endl;
    plik<<pesel<<endl;

    plik.close();
       getchar();
       cout<<endl<<"Pomyslnie dodano profil!"<<endl;
      }

break;
case '2':
      {



//wczytywanie danych (profili studentow) z pliku//



getchar();
system("cls");
      }
      break;
      case '3':
    {
        exit(0);
    }
break;
    default: cout<<"Nie ma takiej opcji w menu!"<<endl;
    getchar();
    system("cls");
    break;
}
}
   return 0;

}
1

Nie wiem jednak w jaki sposób odczytać wprowadzone dane

Dokładnie odwrotnie do sposobu w jaki były dane wysłane do pliku. >>

#include<iostream>
#include<fstream>
#include <string>
using namespace std;

int main()
{
   {
      ofstream fout{ "test.txt"};
      if (!fout) return 1;
      string name, surname, pesel;
      cin >> name >> surname >> pesel;
      fout << name << endl << surname << endl << pesel << endl;
   }

   {
      ifstream fin{ "test.txt" };
      if (!fin) return 1;
      string name, surname, pesel;
      fin >> name >> surname >> pesel;
      cout << name << ", " << surname << ", " << pesel << endl;
   }
}

https://wandbox.org/permlink/J7bl3IIZVuGUdEGO

0

Dzięki! :)

0

@YooSy Mam jeszcze pytanie co do zapisu:

if (!fout) return 1;

Co właściwie oznacza on w tym przypadku?

0

Jeśli coś jest nie tak ze strumieniem plikowym to opuść program z kodem błędu (tutaj wypadłoby jakoś obsłużyć rzucony wyjątek, zamiast opuszczać program).
Strumienie plikowe tak jak i strumienie wejścia-wyjścia konwertowane są typu logicznego, więc można ich używać
w warunkach.

#include <iostream>
using namespace std;

int main()
{
   int n;
   cin >> n; // wczytujemy zamiast liczby, jakiś inny znak, np. g
   if (!cin) {
      cout << "nie podano liczby\n";
   }
   return 0;
}

https://wandbox.org/permlink/Nyw1d4XIhaPOO8FK

0

Ok, rozumiem! Wielkie dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1