2011-01-26 25 views
14

Sto provando a leggere un file che ho letto in precedenza con successo. Lo sto leggendo attraverso una libreria, e lo sto inviando così com'è alla biblioteca (ad esempio "myfile.txt"). So che il file viene letto dalla directory di lavoro/corrente.Come trovo la directory corrente?

Ho il sospetto che la directory corrente/di lavoro sia cambiata in qualche modo. Come posso controllare qual è la directory corrente/funzionante?

risposta

21

Dato che hai aggiunto il tag visual C++, suggerirò la funzione standard di Windows per farlo. GetCurrentDirectory

Usage:

TCHAR pwd[MAX_PATH]; 
GetCurrentDirectory(MAX_PATH,pwd); 
MessageBox(NULL,pwd,pwd,0); 
+0

Interessante. Sei sicuro che non scriva solo la parte che si adatta al buffer? – monoceres

+0

Davvero dispiaciuto ... Il mio programma non era corretto .. Ho appena cancellato i miei commenti in modo da non indurre in errore gli altri. L'ho testato di nuovo: se la dimensione del buffer specificata non è abbastanza grande, il buffer verrà mantenuto non modificato e verrà restituita la dimensione desiderata. – yaobin

2

Ecco la risposta più indipendente dalla piattaforma ho avuto qualche tempo fa:

How return a std::string from C's "getcwd" function

E ' piuttosto prolisso , ma fa esattamente quello che dovrebbe fare, con una bella interfaccia C++ (cioè restituisce una stringa, non un how-long-is-you-esattamente? - (const) char*).

di tacere gli avvertimenti MSVC sulla deprecazione di getcwd, si può fare un

#if _WIN32 
    #define getcwd _getcwd 
#endif // _WIN32 
Problemi correlati