2010-10-17 7 views
0

Ceci est vraiment étrange. Le chemin absolu ne fonctionne pas pour ifstream et ostream. Cela fonctionne quand j'utilise un chemin relatif comme ceci:Le chemin absolu fstream ne fonctionne pas

ofstream out; 
out.open("file2.txt"); 
string river = "i love cheese"; 

if(!out){ 
    cout << "error"; // have breakpoint set here 
} else { 
    out << river; // have breakpoint set here (stops here when debugging) 
} 

out.close(); 

Mais quand j'utilise un chemin absolu, ce n'est pas le cas. Je suis bien conscient de devoir utiliser "\" pour la barre oblique et j'ai essayé d'utiliser "/" à la place et cela ne fonctionne toujours pas.

ofstream out; 
out.open("C:\\file2.txt"); // also tried "C:/file2.txt" 
string river = "i love cheese"; 


if(!out){ 
    cout << "error"; // have breakpoint set here (stops here when debugging) 
} else { 
    out << river; // have breakpoint set here 
} 

out.close(); 

je vraiment besoin de travailler avec un chemin absolu puisque c'est ce qui est prévu à la fonction et les fichiers d'entrée et de sortie ne seront pas toujours dans le même dossier que le fichier binaire.

+0

Avez-vous la permission d'écrire dans 'C:'? – GManNickG

+0

Appelez 'perror (" open failed ");' quand 'out.open' est évalué à faux. Cela vous dira la raison pour laquelle cela ne fonctionne pas. –

+0

Perror génère-t-il l'erreur sur la console? Je fais une application Windows qui n'a pas de console. : -/ – alex

Répondre

3

Quel est votre système d'exploitation? Windows 7 ne pas permettre de créer des fichiers sur C: \. Vous pouvez créer un nouveau dossier sur C: \, par exemple C: \ temp \ et essayer ce code:

std::ofstream out; 
out.open("C:\\temp\\asd.txt"); 
if(! out) 
{ 
    std::cout << "1"; 
} 
if (!out.is_open()) 
{ 
    std::cout << "2"; 
} 
out.close(); 

Cela fonctionne très bien. Mais lorsque vous essayez de créer un fichier sur C: \, il affiche "12".

+0

J'utilise Vista, mais j'utilisais simplement "C: \" comme exemple simplifié. Le document que je cherche entrée/sortie est profond dans "Mes documents" (qui aura un long chemin entouré de guillemets doubles). – alex

+0

Je suppose que Vista est la même chose que Windows 7, car nous parlons de tels privilèges. Essayez un autre répertoire, ça devrait marcher. Essayez "Mes documents", comme vous le souhaitez. –

+0

Il s'agit du dossier dans lequel se trouve l'exécutable et il n'écrira toujours pas: \ "C: \\ Utilisateurs \\ Alex \\ Documents \\ Visual Studio 2008 \\ Projets \\ outputProject \\ Debug \\ fichier2. txt \ " – alex

Questions connexes