[C++, C] Funzione per leggere un vettore da file di testo

92Nick92
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??

Risposte
apatriarca
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.

92Nick92
Graziiieeee :-D :-D

92Nick92
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

apatriarca
&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.

92Nick92
Il problema è che se non metto la "&" il compilatore mi dà l'errore:"invalid conversion from int to int*"..:S

apatriarca
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.

92Nick92
Aaaah,hai ragione ...il fatto è che avevo abbandonato per un bel po di tempo il C++ e adesso alcune cose mi sfuggono ancora..xD

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