Newsgroup: it.comp.lang.c++
Titolo: Conoscere la directory corrente

Salve
Si può conoscere la directory in cui si sta eseguendo il file (anche tramite
comandi batch con la funzione system) ?
Grazie
--
Luigi
http://web.tiscali.it/luigi_web
ICQ #46240443

comandi batch con la funzione system) ?
Sotto DOS (ma sei OFF-TOPIC) con 
system("cd >miofile.txt");
e poi esamini miofile.txt
--
Andrea Laforgia (mica uno qualunque...)

 e poi esamini miofile.txt
e piu' in generale, sempre OT, con una chiamata a funzione che fa parte delle
API del tuo sistema.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

Andrea Ferro <And...@UrkaDVD.it> wrote in message
9n6941$7sc$1...@serv1.iunet.it...

Io utilizzo argv[0]
Alessandro.


E' comunque una soluzione system dependent con lo svantaggio che compilando su
un altro sistema il compilatore non segnala errore (cosa che farebbe se il nuovo
sistema non supportasse un dato header o una data API).


sistema non supportasse un dato header o una data API).
Inoltre non ottieni la directory corrente ma quella in cui si trova
l'eseguibile, se poi dir corrente ed eseguibile sono nello stesso path
può succedere che argv[0] contenga solo il nome dell'eseguibile.
-- 
Marco Barisione (ICQ 84277092)

 Marco Barisione (ICQ 84277092)
Scusa, pensavo che la domanda fosse proprio quella.
Cosa si intende per directory corrente?
Alessandro.

Io utilizzo argv[0]
Quello restituisce il nome dell'eseguibile. Lo standard pero'
non dice cosa questo esattamente significhi ed in particolare
esistono sia sistemi che tornano un "full path" sia sistemi
che invece tornano solo il nome del file.
Questo senza contare che la "directory corrente" e' un'altra
cosa.
Non esistono sistemi portabili per avere la directory
corrente perche' il concetto stesso di directory (e tanto
piu' quello di directory corrente) non e' indipendente
dalla piattaforma. Per ogni piattaforma/ambiente esistono
sistemi specifici.
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Cosa si intende per directory corrente?
Come directory corrente si intende la directory da cui viene lanciato
il tuo eseguibile, ad esempio se io in dos scrivo "dir" ho l'elenco
delle directory e file della cartela in cui mi trovo ma in realtà
l'eseguibile dir si trova in un'altra directory (ad es.
"c:\windows\command"), comunque come ti è già stato detto il concetto
di directory corrente può cambiare di piattaforma in piattaforma (o
addirittura non esistere).


Grazie
Purtroppo per farlo in c++ sei costretto a ricorrere a soluzioni non
standard che dipendono dal compilatore e/o dalla piattaforma che stai
utilizzando.
Per esempio, in ambiente dos/windows
#include<cdir>	//include non standard.
char workdir[100];
std::getcwd(workdir,100);
Comunque se devi aprire dei file presenti nella directory del
programma non hai alcun bisogno di conoscerla, stessa cosa se devi
aprire files contenuti in delle sottodirectory di essa, visto che ti
basterà conoscere il nome della sottodirectory per aprire i files.
Valuta quindi bene se hai realmente bisogno di una procedura che ti
costringe a produrre codice non portabile.
Il Ghenio
-----
ZIO : Fun and games are over with. Anyone who dares
get in my way shall perish.
DIO ci salvi dagli ocx del Viral Basic.
-----