Problemi di lettura txt

di Anonimizzato28560 il
11 risposte
Ciao,
avete idea del perchè il codice non mi legge un semplice file txt?
Uso Visual Studio 2019.
Il file è nella directory C:\Users\Max\source\repos\Test\Debug

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
ifstream f("example.txt");

if (f) cout << "ok" << endl;

else cout << "errore" << endl;


return 0;
}

11 Risposte

  • Cioè ti visualizza il messaggio "errore" ?
  • oregon ha scritto:


    Cioè ti visualizza il messaggio "errore" ?
    Esattamente.
  • Sei sicuro del percorso? E che il file esista?
  • oregon ha scritto:


    Sei sicuro del percorso? E che il file esista?
    Si.
    Ho provato anche a spostare il file sul Desktop e dare come percorso per il file:
    ifstream f("C:\\Users\\Max\\Desktop\\example.txt");

    Nulla
  • Guarda che funziona perfettamente. Ma tu ricompili?
  • oregon ha scritto:


    Guarda che funziona perfettamente. Ma tu ricompili?
    Si, certamente!

    1>------ Inizio ricompilazione: Progetto: Test, Configurazione: Debug Win32 ------
    1>Origine.cpp
    1>Test.vcxproj -> C:\Users\Max\source\repos\Test\Debug\Test.exe
    ========== Ricompilazione: 1 completate, 0 non riuscite, 0 ignorate ==========

    Potrebbe essere qualche problema relativo ai permessi di lettura?
    Non so come verificarlo però.
    Anche spostando il file txt in diverse cartelle in problema però persiste.
  • Non è che hai il file aperto in qualche applicazione?

    Cambia la else con questa

    else cerr << "Error: " << strerror(errno) << endl;

    Mostri uno screenshot del comando cmd con una dir della cartella in cui hai messo il file?
  • Guarda, anche io sono in studio sulla lettura / scrittura dei file... difatti mi sono loggato per una richiesta di aiuto...

    Per escludere vari problemi ti posso consigliare di far creare all'eseguibile il file, poi riprovi a fare il debug.
    Quindi prima ci metti
    ofstream f("example.txt");
    questo perche solo in output il file, se non esiste, viene creato e lo crea dove gli serve (nella solita directory dell'eseguibile)

    Poi ci levi ofstream e riapri il file in input con ifstream. In questo modo, se non altro, sei sicuro che non ci siano problemi sulla posizione del file.

    ciao
  • Questo può servire nel primo caso (quando non indica il percorso assoluto). Ma se dice che ha problemi anche usando un percorso assoluto, allora ha altri problemi.
  • Ho capito qual'era il problema.
    Creando un file come consigliato da @xsandros ho scoperto che in verità la cartella corretta è :
    C:\Users\Max\source\repos\Test\Test
    e non:
    C:\Users\Max\source\repos\Test\Debug
    come suggerito da alcuni testi sui quali stavo studiando.

    Il fatto che invece non leggeva nemmeno in caso di percorso assoluto è relativo al fatto che il nome del mio file txt era "example.txt" e non "example".
    Il nome del file avevo provato a cambiarlo in "example" (senza .txt), ma a questo punto sempre nella cartella sbagliata.

    Grazie mille ad entrambi.
  • Va beh però con un minimo di attenzione ci riuscivi anche quando ti ho risposto o addirittura senza usare il forum...
Devi accedere o registrarti per scrivere nel forum
11 risposte