wczytanie danych z pliku do vectora

0

witam ;)

mamy taki plik tekstowy :
http://4programmers.net/Pastebin/1544

jak widać jest on spory ;) Teraz chcemy aby te wszystkie liczby były w jakiejś tablicy, najlepiej zrobić to na ,,inteligentnych" tablicach( u nas vector)

oto mój program:

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

using namespace std;

int main ()
{


  vector<string> tablica;
  fstream dane;
  dane.open("licz.txt", ios::in | ios::out) ;
  //vector<int>::iterator it;
  int liczba;
  liczba = 0;
  string napis;
  if(dane.is_open())
    {
        cout<<"plik otwarty.."<<endl;
        while(getline(dane, napis))
        {
            tablica.push_back(napis);
            cout<<napis<<endl;

        }
        //zabawa
        cout<<"teraz z tablicy"<<endl;
        vector<string>::iterator it;
        for(it=tablica.begin(); it!=tablica.end(); it++)
        cout<<*it<<endl;



    }
   else cout<<"plik nie zostal otwarty"<<endl;



Problem w tym, że otwiera ale powoli. Jak temu zaradzić?


}
0

plik się nie ładuje powoli, tylko jego wyświetlanie jest powolne.
jakieś niewielkie przyspieszenie możesz uzyskać używając <<'\n'; zamiast <<endl; ale cudów nie oczekuj — konsola pod Windowsem jest dość powolna.

0

Dzięki za pomoc :) Wszystko działa już poprawnie ale mam jeszcze pytanie z cyklu co jakby :

chciałbym teraz nie robić konwersji z stringa na int bo trochę kłopotliwe i od razu wczytać liczby :

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

using namespace std;

int main ()
{


  vector<int> tablica;
  fstream dane;
  dane.open("ja.txt", ios::in | ios::out) ;
  //vector<int>::iterator it;
  int liczba;
    if(dane.is_open())
    {
        cout<<"plik otwarty.."<<endl;
        while(!dane.eof() )
        {
            dane>>liczba;
            tablica.push_back(liczba);


        }
        cout<<"teraz z tablicy"<<endl;
        vector<int>::iterator it;
        it = tablica.begin();
        cout<<*(it+5);
        //for(it=tablica.begin(); it!=tablica.end(); it++)
        //cout<<*it<<endl;



    }
   else cout<<"plik nie zostal otwarty"<<endl;




}

Ten kod nie działa dobrze a poza tym dłuuugo... ;) Jak to więc zrobić?

0

http://www.wolframalpha.com/input/?i=287312369249255736073118104787080431148924114479136389%20%3E%202%5E64&t=crmtb01

Long int bez znaku nie pomieści Twoich większych liczb,a co dopiero zwykły int.

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