[C++] Funzione che legge ogni linea in uno stream
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):
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
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.
Come faccio a scrivere un altro ciclo in modo che una volta finita una linea vada automaticamente alla linea successiva?