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?
Yksi keino on vain laskea monta riviä tiedostossa on.
ifstream map(filename); string jono=""; int rivit=0; while(getline(map,jono)) { rivit += 1; }
mutta miten lukea viimeine rivi taulukkoon?
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.
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.
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; } }
Joo, nyt käänty, olin vahingossa määrittäny jono muuttujan vaa charriks vaikka piti laittaa stringiks :) Kiitos
Aihe on jo aika vanha, joten et voi enää vastata siihen.