Odczyt danych z pliku

Odpowiedz Nowy wątek
2020-03-29 22:25

Rejestracja: 2 lata temu

Ostatnio: 2 miesiące temu

0

Cześć, próbuję odczytać dane z pliku tekstowego i zapisać je do zmiennej. Wydaję mi się, że wszystko robię jak należy, ale jednak nie. Pierwszą liczbę odczytuje, ale dalej już nie. Z góry dziękuję za pomoc

        std::ifstream inFile;
    inFile.open("plik.txt");
    if (!inFile.is_open())
    {
        std::cout << "Otwarcie pliku nie powiodlo sie.";
        exit(EXIT_FAILURE);
    }
    int numberOfPeople;
    inFile >> numberOfPeople;
    std::cout << numberOfPeople;
    std::string temp;
    std::getline(inFile, temp);
    std::cout << temp;
    double tempD;
    inFile >> tempD;
    std::cout << tempD;

Dane w pliku są w postaci:
4
Sam Stone
2000

edytowany 1x, ostatnio: kq, 2020-03-29 22:25

Pozostało 580 znaków

kq
2020-03-29 22:28
kq
Moderator C/C++

Rejestracja: 7 lat temu

Ostatnio: 7 minut temu

Lokalizacja: Szczecin

3

Takie są konsekwencje mieszania cin i getline. cin wczytuje pierwszą liczbę, w buforze zostawia znak nowej linii, a getline wczytuje wszystko do znaku nowej linii (czyli nic). Nie mieszaj cin i getline albo użyj cin.ignore(numeric_limits<streamsize>::max(), '\n')


Pokaż pozostałe 3 komentarze
dziedziczenie jest dobre, dziedziczenie diamentowe z virtual to proszenie się o kłopoty i słabszą wydajność. Świetnie, że język pozwala na to i jest elastyczny, ale w tym przypadku imo to znaczący overdesign - kq 2020-03-29 23:43
Kompatybilność sprzeczna - świetne powiedzenie (nie wiem czy typo czy nie, ale będę od teraz stosował)! - kq 2020-03-29 23:43
Miałem na myśli dziedziczenie wielobazowe typu C++ czy Python, kontra jednobazowe plus interfejsy typu Java. Ale tak, masz rację że to jest nie do ogarnięcia ani przez większość ludzi, ani przez kompilatory… Znaczy, słyszałem że teraz im de-wirtualizacja już idzie całkiem spoko, ale jeszcze nie widziałem tego nigdy w akcji. - Althorion 2020-03-29 23:45
I tak, litrówka, ale faktycznie nieźle wyszło. ;) - Althorion 2020-03-29 23:46

Pozostało 580 znaków

2020-03-30 10:32

Rejestracja: 15 lat temu

Ostatnio: 15 godzin temu

0
std::getline(inFile >> std::ws, temp);
pod warunkiem, że ta linia nie może być pusta. - MarekR22 2020-03-30 11:45

Pozostało 580 znaków

Odpowiedz

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