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

Wywoływanie metody w wektorze

42 Warsaw Coding Academy
0 głosów
310 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,020 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ź 285 wizyt
0 głosów
1 odpowiedź 299 wizyt

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...