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

Wczytanie danych z pliku txt

0 głosów
588 wizyt
pytanie zadane 6 maja 2020 w C i C++ przez Rajzok Początkujący (390 p.)

Cześć smiley mój problem polega na tym że gdy mam menu z wybraniem miejsca na utworzenie nowego profilu w moim programie, nie wczytuje mi żadnych danych z pliku, gdzie mam nazwy już stworzonych profilów. Procedurę sczytania tych informacji mam w osobnym voidzie. czy ktoś wie jak rozwiązać ten problem?

void utworz_profil()
{
    do
    {
        system("cls");
        pobierz_nazwy();
        cout << "Wybierz wolne miejsce, w którym chcesz stworzyć profil, twórz profile po kolei" << endl;
        cout << "(jeżeli wybierzesz istniejący, to zostanie on zastąpiony):" << endl;
        cout << "1. " << nazwa0 << endl;
        cout << "2. " << nazwa1 << endl;
        cout << "3. " << nazwa2 << endl;
        cout << "4. " << nazwa3 << endl;
        cout << "5. " << nazwa4 << endl;
        cout << "6. Wróć do menu głównego" << endl;
        cout << "Twój wybór: "; cin >> wybor;

        if(wybor==1)
        {
            wybor = 0;
            utworz_profil1();
        }

        if(wybor==2)
        {
            wybor = 0;
            utworz_profil2();
        }

        if(wybor==3)
        {
            wybor = 0;
            utworz_profil3();
        }

        if(wybor==4)
        {
            wybor = 0;
            utworz_profil4();
        }

        if(wybor==5)
        {
            wybor = 0;
            utworz_profil5();
        }

    } while(wybor!=6);
}

a tutaj jest void z wczytaniem danych

void pobierz_nazwy()
{
        nazwy_profili.open("profile/nazwy.txt",ios::in);
        getline(nazwy_profili,linia);
        nazwa0 = linia;
        getline(nazwy_profili,linia);
        nazwa1 = linia;
        getline(nazwy_profili,linia);
        nazwa2 = linia;
        getline(nazwy_profili,linia);
        nazwa3 = linia;
        getline(nazwy_profili,linia);
        nazwa4 = linia;
        nazwy_profili.close();


}

Oczywiście dodałem #include <fstream>

komentarz 6 maja 2020 przez DragonCoder Nałogowiec (36,500 p.)
while (getline(plik, linia)) {
            nazwa [i] = linia;
            i ++;
}

to rowzaianie byloby lepsze. dla Ciebie i przydalby sie tez pewnie caly kod

komentarz 8 maja 2020 przez Rajzok Początkujący (390 p.)

Właśnie nie mogę tak zrobić, gdyż ta zmienna nie jest w tablicy. Są to osobne stringi: nazwa0, nazwa1, nazwa2 itd. Udało mi się to na szczęście inaczej rozwiązać. 

W osobnym pliku tekstowym przechowuję dane, gdzie jest liczba opisująca ilość wierszy w poszczególnych plikach profilów. Np. w wierszu pierwszym jest liczba określająca ilość wierszy w pliku pierwszym itd. Wtedy sobie po prostu pobieram te dane (za pomocą funkcji getline są one pobierane jako zmienna string, dlatego za pomocą funkcji stringstream zmieniam je na zmienną int) i w pętli for wykonuję funkcję getline już w stosunku do pliku zapisu profilu tyle razy, ile wskazuje na to liczba, którą pobrałem wcześniej. 

Obszedłem ten problem niby dookoła, ale działa tak jak tego chciałem smiley.

Dzięki wielkie z wszelką pomoc smiley.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 1,022 wizyt
0 głosów
1 odpowiedź 372 wizyt
pytanie zadane 15 maja 2016 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
0 głosów
1 odpowiedź 1,690 wizyt

93,800 zapytań

142,768 odpowiedzi

323,461 komentarzy

63,421 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...