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

question-closed getline nie działa ze stringiem

Object Storage Arubacloud
0 głosów
390 wizyt
pytanie zadane 19 kwietnia 2020 w C i C++ przez CyprianKoruba Początkujący (290 p.)
zamknięte 19 kwietnia 2020 przez CyprianKoruba

Hej mam problem z funkcją getline a mianowicie zawsze wyskakuje mi błąd gdy funkcją getline chcę wczytać stringa. Dzieje się to już chyba w 3 programie ale zawsze jakoś to omijałem tu nie mogę znaleźć innego rozwiązania.

Nie wiem czy to coś zmienia ale korzystam z VS 2019

 

#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

string imie, nazwisko;
int nr_tel;

int main()
{

    string linia;
    int nr_linii = 1;

    fstream plik;
    plik.open("wizytowka.txt", ios::in);

    if (plik.good() == false) cout << "Nie mozna otworzyc pliku!";

    while (getline(plik, linia))
    {
        switch (nr_linii)
        {
        case 1: imie = linia; break;
        case 2: nazwisko = linia; break;
        case 3: nr_tel = atoi(linia.c_str()); break;
        }
        nr_linii++;
    }

    plik.close();

    cout << "imie: " << imie << endl;
    cout << "nazwisko: " << nazwisko << endl;
    cout << "telefon: " << nr_tel << endl;

    return 0;
}

 

komentarz zamknięcia: znalazłem odpowiedź na pytanie zadane na forum
komentarz 19 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)

Kod jest dobry. Jedyne co bym w nim zmienił to linijka 19.

if (plik.good() == false) { 
    cout << "Nie mozna otworzyc pliku!";
    return 1;
}

W czym się objawia to nie działanie?

 

komentarz 19 kwietnia 2020 przez j23 Mędrzec (194,920 p.)

Chyba tak powinno być:

while (getline(plik, linia)) {
    switch (nr_linii) {
    case 1: imie = linia; break;
    case 2: nazwisko = linia; break;
    case 3: 
        nr_tel = atoi(linia.c_str()); 
        nr_linii = 0;
        break;
    }

    ++nr_linii;
}



A tak najlepiej:

while (plik >> imie && 
        getline(plik >> ws, nazwisko) && 
        plik >> nr_tel) {
    ...
}

Żadnych atoi i liczników linii.

komentarz 19 kwietnia 2020 przez CyprianKoruba Początkujący (290 p.)

@tangarr,  Pokazuje mi się błąd identyfikator getline jest niezidetyfikowany i "getline "idetyfikatora nie odnaleziono 

 

1
komentarz 19 kwietnia 2020 przez j23 Mędrzec (194,920 p.)

Załącz nagłówek <string>.

komentarz 19 kwietnia 2020 przez CyprianKoruba Początkujący (290 p.)
Dzięki zadziałał trochę to dziwne bo gdy robiłem zadanie ze spoja i miałem dodany ten nagłówek string też nie działało zupełnie jakby do getline ( cin, zmienna_string ) nie mógł wczytać zmiennej
komentarz 19 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)
Niektóre kompilatory dołączają <string> wewnątrz <iostream>
komentarz 19 kwietnia 2020 przez CyprianKoruba Początkujący (290 p.)
Dzięki wszystkim za odpowiedzi temat leci do zamknięcia

Podobne pytania

0 głosów
7 odpowiedzi 2,095 wizyt
pytanie zadane 14 września 2015 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 1,061 wizyt
pytanie zadane 3 stycznia 2016 w C i C++ przez agre Użytkownik (550 p.)
–1 głos
1 odpowiedź 184 wizyt
pytanie zadane 19 sierpnia 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)

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!

...