käsiteltävä txt tiedosto sisältää lukuja, joiden välissä on tabulaattori ja välilyönti. luvut ovat väliltä 0-1000.
Tämän tiedoston data pitäisi saada talteen int tyyppiseen taulukkooon.
Ohjelma lukee nyt tiedoston char tyyppiseen puskuriin.
Miten pelkät luvut saadaan int taulukkoon???
#include <fstream> std::ifstream in; in.open("file.txt"); if(!(in.is_open())) { printf("failed to open file \n"); return 1; } int i = 0; char buf[10000]; int table[10000] = {0}; while(!(in.eof())) { in.getline(buf, 10000); for(i = 0; i < 10000; i++) { } }
(Mod. edit. Ole hyvä ja käytä kooditageja.)
Vastaus: lue tiedostosta luvut 'sanoina' ja muunna sitä mukaa kun niitä tulee. Eli toisin sanoen (half-pseudo):
using namespace std; //... ifstream in("file.txt"); int c = 0, luku, luvut[1000]; while(!in.eof()){ in >> luku; luvut[c++] = luku; }
Virhetarkistukset yms. jätän sinun huoleksesi.
Tee tällainen funktio ja kutsu sitä:
#include <vector> #include <istream> #include <algorithm> #include <iterator> using namespace std; vector<int> readall(istream &in) { vector<int> v; copy(istream_iterator<int>(in), istream_iterator<int>(), back_inserter(v)); return v; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.