[C++] Funzione che legge ogni linea in uno stream

francesfarmer
Voglio scrivere una funzione che legga ogni riga da un file di stream e ritorni il numero di righe in cui è presente un certo intero.

Questo è il mio file.txt:


1 5 -9 123
45 78 -1024 10100 1
0 27 5 -78 -123
9 -9 -9 9 0
10100 1 78 -9

Se io, per esempio, scrivessi in input il numero -9 la funzione ritornerebbe il numero 3 perché tre sono le linee in cui c'è scritto il numero -9.

La funzione che ho scritto io legge solo una riga e non riesco a farla andare avanti (gli #include sono sottintesi):

int n_lines(int n, ifstream& input)
{ 
      int x;
      int y=0;
      string line;
      getline(input, line);
      istringstream iss(line);
      while(iss >> x){
               if (x == n){
                   y++;}
      return y;
}

Risposte
vict85
Quando finisci con una riga ne devi leggere un'altra. Hai bisogno di due cicli. E comunque stai contando il numero di volte in cui compare e non il numero di righe.

francesfarmer
Come faccio a scrivere un altro ciclo in modo che una volta finita una linea vada automaticamente alla linea successiva?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.