2017-07-20 5 views
-2

Ich versuche, eine Datei mit etwas Text darin zu erstellen, der in einen bestimmten Ordner gehen muss. Es wird jedoch erstellt, aber im selben Ordner wie die exe. Hier ist der Code:C++ Ofstream erstellt keine Datei an einem bestimmten Ort

const char* name; 
char path[200]; 

int main() 
{ 
    cin.getline(path, 230,'\n'); 

    DIR *dir; 
    name = path; 
    struct dirent *ent; 

    if ((dir = opendir(name)) != NULL) 
    { 
     while ((ent = readdir(dir)) != NULL) 
     { 
      ofstream file(path, ios::out | ios::trunc); 
      file.open("somename"); 
      file << ent->d_name + " something"; 
      file.close(); 
     } 

     closedir(dir); 
    } 
    else 
    { 
     perror(""); 
    } 
} 

Was mache ich falsch?

+0

'file.open ("some name");' wird die Datei im aktuellen Arbeitsverzeichnis erstellen, ohne spezifischen fie Weg gegeben. – user0042

+0

Bitte beachten Sie, dass Sie die resp. enthält am Anfang Ihrer Quelle. Die notwendigen Funktionen für Bibliotheksfunktionen werden normalerweise auf der man-Seite der Funktion selbst erwähnt. (Sie fehlen in Ihrem [MCVE] (http://stackoverflow.com/help/mcve), hoffentlich nicht in Ihrem "echten" Programm.) – Scheff

+0

Wenn Sie eine Datei in einem bestimmten Verzeichnis speichern wollen, stellen Sie entweder die resp . relativen oder absoluten Dateipfad (mit Verzeichnissen) oder ändern Sie das aktuelle Verzeichnis zuvor. Sie können dies in Ihrem Programm mit ['chdir()'] tun (http://man7.org/linux/man-pages/man2/chdir.2.html). – Scheff

Antwort

0

Verwenden Sie \\, um ein Verzeichnis von einem anderen oder einer Datei vom Verzeichnis zu unterscheiden.

Beispiel:

ofstream file("D:\\NewFolder1\\NewForlder2\\NewFolder3\\FileName.txt", ios::out | ios::trunc); 
file.open("D:\\NewFolder1\\NewForlder2\\NewFolder3\\FileName.txt"); 
Verwandte Themen