Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tiedoston lukeminen

TheHanz [09.02.2007 10:59:31]

#

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.)

sqwiik [09.02.2007 11:17:59]

#

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.

koo [09.02.2007 13:48:44]

#

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;
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta