2017-09-09 5 views
1

Ich benutzte diesen Code, um zu versuchen, die Datei zu öffnen und zu lesen (nicht leer), aber Ifstream hat nicht funktioniert - es konnte die Datei nicht öffnen: Ich fügte die Überprüfung der Dateiöffnung hinzu und es zeigte , dass ifstream die Datei gar nicht geöffnet hat (konnte).Ifstream kann Datei mit amdinistrator Rechten nicht öffnen

Ich gab Administratorrechte für das Programm, aber Ifstream konnte immer noch nicht die Datei lesen.

Ich habe auch versucht, einen Pfad zu finden, wo Ifstream würde diese Datei lesen, aber ich habe keinen Erfolg, und schließlich habe ich versucht, Datei mit dem absoluten Pfad zu öffnen - aber das Ergebnis ist das gleiche.

Die Datei befindet sich im Stammordner des Programms, aber ich habe es überall platziert und nichts geändert.

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

using namespace std; 

int main() { 
    string s; 
    ifstream file("fix.txt"); 
    if (file) 
     cout << "SUCCESSFULL OPENING" << endl; 

    while (getline(file, s)) { 
     cout << s << endl; 
     s += "+"; 
     cout << s << endl; 
    } 

    file.close(); 

    return 0; 
} 
+0

Schreiben Wie Sie Ihre laufen Programm? Wovon? Wie ist das aktuelle Verzeichnis, wenn Sie Ihr Programm ausführen? Ist es dasselbe, wo sich die Datei befindet, die Sie lesen möchten? Bist du sicher***? –

+0

@ some-programmer-dude, ich habe gerade eine Datei mit Visual Studio IDE ausgeführt, ich konnte nicht herausfinden, welches aktuelle Verzeichnis das Programm hatte, aber ich habe die Datei in jeden Ordner gelegt, den das Programm hat, und es gibt keinen Effekt. –

+0

Bei der Ausführung von Visual Studio ist das aktuelle Standardverzeichnis das Projektstammverzeichnis IIRC (oder möglicherweise der Arbeitsbereich root?). Es ist * nicht * der Ort, an dem sich das ausführbare Programm befindet. Sie können das Verzeichnis in den Projekteinstellungen ändern. –

Antwort

0

Sie können dann über

file.exceptions(std::ios_base::failbit); 

durch Aktivierung Ausnahmen auf dem Strom Zugriff auf eine detailliertere Fehlercode haben, können Sie weitere Informationen zu erhalten, indem

try { 
    file.open("fix.txt"); 
} 
catch(std::ios_base::failure& f) { 
    // f.what() contains a message, f.code() returns a std::error_code 
} 
Verwandte Themen