[C++, C] Funzione per leggere un vettore da file di testo
Come da titolo mi serve aiuto con questo tipo di funzione.
La lettura di un file di testo nel main non è un problema,lo diventa quando devo creare una funzione,poichè non riesco a impostare un parametro formale della funzione che mi permetta,di volta in volta,di scegliere un percorso diverso dal quale poter aprire il file di testo.Avevo provato in questo modo:
void leggiVettore(string NomeFile,int vettore[Max_Dim],int dim)
{dim=0;
cout<<"Lettura da file del vettore... \n";
ifstream leggi;
leggi.open(NomeFile);
while(!leggi.eof())
{
leggi >> vettore[dim];
dim++;
}
leggi.close();
Ma in questo modo il compilatore mi dà il seguente errore:"no matching function for call to "std::basic_ifstream::open(std::string&) ",che alternativa ho??
La lettura di un file di testo nel main non è un problema,lo diventa quando devo creare una funzione,poichè non riesco a impostare un parametro formale della funzione che mi permetta,di volta in volta,di scegliere un percorso diverso dal quale poter aprire il file di testo.Avevo provato in questo modo:
void leggiVettore(string NomeFile,int vettore[Max_Dim],int dim)
{dim=0;
cout<<"Lettura da file del vettore... \n";
ifstream leggi;
leggi.open(NomeFile);
while(!leggi.eof())
{
leggi >> vettore[dim];
dim++;
}
leggi.close();
Ma in questo modo il compilatore mi dà il seguente errore:"no matching function for call to "std::basic_ifstream
Risposte
Se guardi la documentazione open richiede come argomento una stringa del C e non una std::string del C++. Devi quindi usare la funzione membro c_str() della stringa.
Graziiieeee


Ho un altro piccolo problema..quando vado a chiamare la funzione nel main: leggiVettore("C:\\Users\\Vittorio\\Desktop\\vettore1.txt",&v1[Max_Dim],dim1);
e chiedo poi di stampare i valori del vettore,mi escono tutti 0 e il valore di dim1 è pure 0,però se all'interno della funzione stessa ciclo e chiedo di stampare i valori,escono correttamente...che abominio ho fatto nella chiamata?xD
e chiedo poi di stampare i valori del vettore,mi escono tutti 0 e il valore di dim1 è pure 0,però se all'interno della funzione stessa ciclo e chiedo di stampare i valori,escono correttamente...che abominio ho fatto nella chiamata?xD
&v1[Max_Dim]
La riga precedente significa "dammi l'indirizzo dell'elemento Max_Dim-esimo dell'array v1". Sono abbastanza certo che non fosse quello che volevi (quell'elemento non fa neanche parte del tuo array).. Il metodo corretto di passare un errore è semplicemente quello di scrivere il nome del vettore.
Il problema è che se non metto la "&" il compilatore mi dà l'errore:"invalid conversion from int to int*"..:S
Devi solo scrivere v1, NON v1[Max_Dim].. È proprio sbagliato metterci le parentesi quadre con un qualche valore dentro in questo caso. Ti consiglio di ripassarti gli array.
Aaaah,hai ragione ...il fatto è che avevo abbandonato per un bel po di tempo il C++ e adesso alcune cose mi sfuggono ancora..xD