2017-11-07 3 views
-2

Ich habe Datei (nennen wir es "file.txt"), die in einem Ordner /folder/where/the/file/is ist. Und dieser Ordner wurde $FOLDER exportiert, wie wenn ich es tue:Lesen einer Datei aus einem exportierten Ordner

echo $FOLDER, ich habe: folder/where/the/file/is

Nun, ich möchte testen, ob die Datei vorhanden ist oder nicht.

Also habe ich versucht,

ifstream ifile(Name_finput); 

    if(!ifile.good()){ 
    cout << "File doesn't exist !" << endl; 
    return; 
    } 

Dies funktioniert, wenn Name_finput = "/folder/where/the/file/is/file.txt", aber nicht, wenn Name_finput=$FOLDER/file.txt

Gibt es eine Möglichkeit für sie $FOLDER/file.txt, indem die Form zu arbeiten? Es scheint, dass der Compiler $FOLDER nicht als /folder/where/the/file/is interpretiert.

+0

'$ FOLDER' ist keine Sache in C++. Was Sie brauchen, ist 'std :: getenv()'. – DimChtz

+0

Suche nach 'getenv()'. – user0042

Antwort

0

$FOLDER ist kein gültiger C++ - Code. Um auf die Umgebungsvariablen zuzugreifen, müssen Sie std::getenv() verwenden. So sollte Ihr Code aussehen:

#include <iostream> 
#include <cstdlib> 
#include <fstream> 

int main() { 

    std::ifstream ifile; 

    if (const char* e = std::getenv("FOLDER")) { 

     ifile.open(std::string(e) + std::string("/file.txt")); 

     if (!ifile.is_open()) { 

      std::cout << "File doesn't exist !" << std::endl; 

     } else { 

      // Do-stuff with the file 

     } 

    } 

    return 0; 
}