我有这个简短的程序:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
int main (int argc, char * argv[]) {
std::string homedir = std::getenv("HOME");
std::string filename = argc > 1 ? argv[1] : (homedir + "/" + "file");
std::cout << homedir << std::endl;
std::cout << filename << std::endl;
std::fstream file;
file.open(filename, std::ios::out);
file << "Yo yo waddup" << std::endl;
file.close();
return 0;
}
当我不提供参数时,它会在users主目录中打开一个文件。那当然是有道理的。但是当我从不同的目录运行它时:
$ ./folder/hometest examplefile
程序在我当前目录中创建“examplefile”,而不是程序所在的目录。
为什么会发生这种情况?
答案 0 :(得分:2)
为什么会发生这种情况?
该计划的表现与预期一致。
相对于当前工作目录打开文件,而不是可执行文件所在的位置。
如果它没有这样做,
上述两种情况都不可取。