• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wywoływanie metody w wektorze

Object Storage Arubacloud
0 głosów
211 wizyt
pytanie zadane 4 grudnia 2021 w C i C++ przez magda_19 Gaduła (3,080 p.)

Witam,
Piszę książkę adresową obiektowo. Program ma funkcjonalność, która pozwala na zmianę hasła użytkownikowi. Chcę zmienione hasło zapisać w pliku. Czyli do klasy PlikZUzytkownikami chcę dodać metodę zaktualizujHaslo() i wowołać ją po zmianie hasła w wektorze. Próbuję to zaimplementować w moim kodzie, ale mam błąd w tej metodzie. Wstawiam również link do github, gdzie znajduje się cały program: https://github.com/Magda19P/AddressBook-object_oriented

 

void PlikZUzytkownikami :: zaktualizujHaslo()
{
    string noweHaslo;
    fstream plikTekstowy;
    vector <Uzytkownik> uzytkownicy;
    plikTekstowy.open(pobierzNazwePliku().c_str(), ios::out);

    if (plikTekstowy.good() == true)
    {
        plikTekstowy << uzytkownicy.push_back(noweHaslo); //tu próbuję zapisać do pliku
    }
    else
    {
        cout << "Nie mozna otworzyc pliku " << nazwaPlikuZUzytkownikami << endl;
    }
    plikTekstowy.close();

}
void UzytkownikMenedzer :: zmianaHaslaZalogowanegoUzytkownika() {
    string noweHaslo = "";
    cout << "Podaj nowe haslo: ";
    cin >> noweHaslo;

    for (int i = 0; i < uzytkownicy.size(); i++) {
        if (uzytkownicy[i].pobierzId() == idZalogowanegoUzytkownika) {
            uzytkownicy[i].ustawHaslo(noweHaslo);
            cout << "Haslo zostalo zmienione." << endl << endl;
            system("pause");
        }
    }
    plikZUzytkownikami.zaktualizujHaslo(noweHaslo);
}

 

1 odpowiedź

0 głosów
odpowiedź 4 grudnia 2021 przez tkz Nałogowiec (42,000 p.)
 plikTekstowy << uzytkownicy.push_back(noweHaslo); //tu próbuję zapisać do pliku

Tutaj wrzucasz do wektora, nie pobierasz. Możesz to rozwiązać w ten sposób(oczywiście lepiej rozbić to na dwie linie). 

 plikTekstowy << (uzytkownicy.push_back(noweHaslo), noweHaslo); //tu próbuję zapisać do pliku

Ale to nadal nie ma sensu, bo ten wektor jest pusty, w sensie nie wiesz jakiego to użytkownika. Stwierdzam na podstawie tego co widzię tutaj, nie szukałęm w repo. 

Na marginesie:
1. vector z standardu ma metodę "find", nie musisz szukać ręcznie. 
2. otwórz plik w trybie do zapisu, ofstream i podaj w konstruktorze nazwę pliku, nie musisz go również ręcznie zamykać, od tego jest destrutkro

Generalnie powinnaś przekazać id, nazwę, coś po czym będziesz mogła wyszukać użytkownika w pliku i zaktulizować wybrane pole. Póki co, to czyścisz plik i dodajesz jedno hasło. 

Podobne pytania

0 głosów
1 odpowiedź 199 wizyt
0 głosów
1 odpowiedź 204 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...