好的,所以我的代码很简单。
#include <iostream>
#include <fstream>
#include <unistd.h>
using namespace std;
int main(){
char a; char mas[5000];
fstream fin;
fin.open("input.txt", ios::in);
if(!fin.is_open()) cout << "No file found!";
getcwd(mas, 5000);
cout << mas;
return 0;
}
所以我的输入文件在cpp文件旁边,在构建的可执行文件旁边,但显示错误消息。所以我检查了getcwd函数在哪里是实际的工作区,因为即使有完整路径它也不起作用,我的文件在桌面上(/ Users / user / Desktop),但getcwd显示我 - / Users / user,所以我很困惑,但试图把我的txt文件放在那里它工作,如何更改该方法“打开”打开文件与相对路径实际上是下一个顶级cpp或可执行文件?
答案 0 :(得分:0)
argv
main()
参数是用于调用可执行文件的命令行,因此您可以使用argv[0]
获取可执行文件的路径,以便构建您的可执行文件的路径输入文件:
#include <string>
#include <iostream>
#include <fstream>
#include <unistd.h>
using namespace std;
int main(int argc, const char **argv){
char a; char mas[5000];
fstream fin;
string dirname, inputFilename;
const char *p = strrchr(argv[0], '/');
if (p != 0)
dirname = string(argv[0], p - argv[0] + 1);
inputFilename = dirname + "input.txt";
fin.open(inputFilename.c_str(), ios::in);
if(!fin.is_open()) {
cout << "No file found!" << endl;
return 1;
}
getcwd(mas, 5000);
cout << mas << endl;
return 0;
}