Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tekstitiedoston rivien määr? (c++)

Jyri [17.04.2005 19:46:47]

#

aloin tuossa koodaamaan erästä ohjelmaa, joka tulostaa tekstitiedoston sisältöä. Ongelmaksi tuli vain, että osaan tulostaa vain koko tiedoston sisällön kerralla, vaikka pitäisi tulostaa vain viimeinen rivi. Miten saisi selville montako riviä txt filussa on? Miten saisi luettua taulukkoon vain sen viimeisen rivin?

Aruviel [17.04.2005 19:54:42]

#

Yksi keino on vain laskea monta riviä tiedostossa on.

ifstream map(filename);
string jono="";
int rivit=0;

while(getline(map,jono)) {
    rivit += 1;
}

Jyri [17.04.2005 21:41:50]

#

mutta miten lukea viimeine rivi taulukkoon?

Aruviel [17.04.2005 21:47:57]

#

Uhm. Merkkijonotaulukkoon? No edellistä esimerkkiä mukaillen lisäät string temp; ennen looppia, sitten rivit += 1; jälkeen teet temp = jono;. Loopista tultaessa pois siirrät temp-stringin merkki kerrallaan merkkijonoon.

ifstream map(filename);

string jono="";
string temp="";
int rivit=0;

while(getline(map,jono)) {
  rivit += 1;
  temp = jono;
}

char Merkkijono[temp.size()];
for(int i = 0; i < temp.size(); i++) {
  Merkkijono[i] = temp[i];
}

Tai jotain tuohon suuntaan.

Edit: Emminä tiiä tarvitteeko tota temppiä tohon ollenkaan, ko se viimeinen rivi taitaa jäädä "jono"-olioon.

ipe [18.04.2005 10:28:21]

#

joo, oisin käyttäny tota ekaa esimerkkiä, mutta kun se herjaa, että while(getline(map,jono)) :: char *int pointer to char :D tolleen g++ sano.

Aruviel [18.04.2005 15:21:31]

#

Ettet vain tee jotain väärin?

Esimerkiksi minulla kääntyy hyvin seuraava:

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

using namespace std;

int main() {
  string filename="tiedosto";

  ifstream map(filename.c_str());
  string jono="";
  int rivit=0;

  while(getline(map,jono)) {
    rivit += 1;
  }
}

Jyri [18.04.2005 21:00:00]

#

Joo, nyt käänty, olin vahingossa määrittäny jono muuttujan vaa charriks vaikka piti laittaa stringiks :) Kiitos

Vastaus

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

Tietoa sivustosta