Buongiorno a tutti,
sto svolgendo un esercizio che riguarda la lettura di un file di testo (esportato da Excel in formato CSV), la ricerca di una stringa dentro quest'ultimo ed il conteggio di quante volte la suddetta stringa appare.
Il codice che ho realizzato funziona, ma mi sorge una curiosità. Se sposto l'inizializzazione della variabile "posizione", ponendola all'inizio del codice e fuori dai cicli, l'esecuzione cambia radicalmente restituendo un risultato errato.
Da cosa può dipendere? Perché è necessario che quella variabile venga inizializzata proprio lì?
Allego il codice e ringrazio chiunque sia così disponibile da aiutarmi.
Un caro saluto
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream f("Orario.csv");
int ore = 0;
string nome = "Chiari";
string riga = "";
if (f)
{
while (getline(f, riga))
{
int posizione = 0;
while ((posizione = riga.find(nome, posizione)) != string::npos)
{
posizione++;
ore++;
cout<<posizione<<endl;
}
}
cout<<ore<<endl;
f.close(); f.clear();
}
else
cout<<"File non letto"<<endl;
return 0;
}