Wczytanie liczb z pliku do vectora.

0

Witam.
Próbuję napisać program, w którym niestety muszę wczytać sporą liczę danych liczbowych z pliku tekstowego. Do tej pory obsługę plików robiłem w czystym C... Czy może mi ktoś pomóc jak napisać taki "mały" programik który będzie mi wczytywał te dane aż do napotkania EOF'a do vektora który będzie int a nie stringiem ( więc z tego co czytałem opcja ze">>" odpada). Chciałem użyć vectora z racji na to że mój finalny program ma wczytywać dane z różnych plików o różnej liczbie liczb (raz może być 100 a raz 1000 itd.) a vector jest "dynamiczny"-jeżeli ktoś ma pomysł na coś innego to również bardzo proszę. ;)
Oto co na razie napisałem:


#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    fstream plik;
    vector<int>dane;
    plik.open("stud0.txt",ios::in);
   
 if(plik.good()==false){
        cout<<"Cos poszlo nie tak"<<endl;
    }

    while(!plik.eof()){
       //CHODZI MI O ŚRODEK TEJ PĘTLI
    }
   
    plik.close();
    return 0;
}

Dzięki.

0

Najłatwiej chyba będzie wczytywanie z pliku linia po lini (getline). Następnie z takiej lini separujesz sobie oddzielnie każdą liczbę (np. bo są oddzielone spacjami, tabulacją etc.) i zapisujesz do go vectora wlaśnie.

Do podzielenia całej linijki tekstu na pojedyncze słowa można użyć istringstream. Przed zapisaniem takiej liczby do vektora musisz ją najpierw zamienieć na inta (z stringa)

2
Chungu napisał(a):

więc z tego co czytałem opcja ze">>" odpada

Dlaczego odpada?

    int liczba;
    while(!plik.eof())
    {
        plik>>liczba;
        dane.push_back(liczba);
    }
6

Jeśli w pliku są wyłącznie liczby to jest to trywialne:

std::ifstream f("data.txt");
std::vector<int> data;
std::copy(std::istream_iterator<int>(f),std::istream_iterator<int>(), std::back_inserter(data));
0

Dzięki za wszystkie odpowiedzi. :D Byłem zmęczony - dziś już wszystko mi działa i trochę wstyd za pytanie. :D

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