我有一个文件夹/folder/where/the/file/is
中的文件(让我们称之为" file.txt")。
此文件夹已导出到$FOLDER
,例如,如果我这样做:
echo $FOLDER
,我得到了:folder/where/the/file/is
现在,我想测试文件是否存在。
所以,我试过
ifstream ifile(Name_finput);
if(!ifile.good()){
cout << "File doesn't exist !" << endl;
return;
}
这适用于Name_finput = "/folder/where/the/file/is/file.txt"
,但不适用于Name_finput=$FOLDER/file.txt
通过保留表单$FOLDER/file.txt
,有没有办法让它工作?
似乎编译器没有将$FOLDER
解释为/folder/where/the/file/is
。
答案 0 :(得分:0)
$FOLDER
不是有效的C ++代码。要访问环境变量,您需要使用std::getenv()
。以下是代码的外观:
#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;
}