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

odczyt z pliku tekstowego

0 głosów
429 wizyt
pytanie zadane 11 maja 2016 w C i C++ przez Evelek Nałogowiec (28,960 p.)

Mam w pliku tekstowym dane zapisane w ten sposób:

123 234 345 456 567 678 789

234 345 456 567 678 789

345 456 567 678 789

Jest możliwość odczytania ich ale w ten sposób, aby każdą liczbę wpisać w nowy wiersz? To znaczy, używałem opcji getline, ale wczytuje mi ona całą linię tekstu, a mi chodzi aby wczytało:

123

234

456

itd.

Mój kod wygląda tak:

fstream plik;
    plik.open("abcd.txt", ios::in);
    if(plik.good()==false)
    {
        cout << "Plik nie istnieje!";
        exit(0);
    }
    string linia;
    while(getline(plik, linia))
    {
        cout << linia << endl;
    }
    plik.close();

Jak go przerobić aby wczytywał liczba pod liczbą?

3 odpowiedzi

+1 głos
odpowiedź 11 maja 2016 przez Radfler VIP (101,030 p.)
edycja 11 maja 2016 przez Radfler
 
Najlepsza

Wczytuj dane z użyciem operatora >>:

fstream plik;
plik.open("abcd.txt", ios::in);
if(plik.good()==false)
{
    cout << "Plik nie istnieje!";
    exit(0);
}

for(int liczba; plik >> liczba; )
{
    cout << liczba << endl;
}
// plik.close(); <-- niepotrzebne

 

komentarz 11 maja 2016 przez Evelek Nałogowiec (28,960 p.)
Super, działa, dziękuje.
komentarz 11 maja 2016 przez Memories Obywatel (1,410 p.)
Nie trzeba juz zamykac pliku ? Mozesz wytlumaczyc ?
komentarz 11 maja 2016 przez Radfler VIP (101,030 p.)

Destruktor obiektu sam wywołuje funkcję close, więc nie jest to potrzebne (RAII).

http://en.cppreference.com/w/cpp/io/basic_filebuf/~basic_filebuf

komentarz 11 maja 2016 przez Memories Obywatel (1,410 p.)
Dzieki wielkie!
+1 głos
odpowiedź 11 maja 2016 przez Memories Obywatel (1,410 p.)
string a;

 plik>>a; <-- to w petli oczywiscie i potem wez wyswietl to po endl;. Sprawdz czy działa :D
komentarz 11 maja 2016 przez Evelek Nałogowiec (28,960 p.)
A jaki warunek dać w pętli while?

plik >> a służy chyba do wczytywania danych, a ja chce je odczytać?
komentarz 11 maja 2016 przez Memories Obywatel (1,410 p.)
Napisali ci juz na dole o tym :D
+1 głos
odpowiedź 11 maja 2016 przez Patrycjerz Mędrzec (192,320 p.)

Problem wielokrotnie przerabiany na forum, ale powtórzę.

Masz trzy możliwości:

  1. Pobierasz całą linię i wyciągasz z niej odpowiednie informacje.
  2. Operujesz na plikowym wskaźniku, ale wtedy wymagane jest równe rozmieszczenie danych w pliku.
  3. Korzystasz z operatora >>.

W twoim przypadku możesz zastosować wszystkie metody, więc jak ci wygodniej... 

komentarz 11 maja 2016 przez Evelek Nałogowiec (28,960 p.)
Szukałem na forum tego, aby nie powtarzać ale nie znalazłem. Dzięki za odpowiedź.

Podobne pytania

0 głosów
0 odpowiedzi 977 wizyt
pytanie zadane 15 kwietnia 2017 w Java przez plkpiotr Stary wyjadacz (12,420 p.)
0 głosów
2 odpowiedzi 650 wizyt
0 głosów
3 odpowiedzi 333 wizyt

93,743 zapytań

142,682 odpowiedzi

323,299 komentarzy

63,330 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.

...