我的 C++ 程序的工作目录是啥? [复制]
Posted
技术标签:
【中文标题】我的 C++ 程序的工作目录是啥? [复制]【英文标题】:What is the working directory of my C++ program? [duplicate]我的 C++ 程序的工作目录是什么? [复制] 【发布时间】:2018-07-28 02:01:34 【问题描述】:我试图让我的程序读取文件并将该文件用作输入信息。我将文件放在与我的程序相同的目录中,但仍然没有。
这是我的代码:
int main()
ifstream inFile;
inFile.open("inData.txt");
if (inFile.fail())
cout << "file did not open please check it\n";
system("pause");
system("exit");
studentType sList[20];
getData(inFile, sList, 20);
calculateGrade(sList, 20);
printResult(sList, 20);
inFile.close();
system("pause");
return 0;
【问题讨论】:
你用的是什么编译器? MSVS 使用源文件所在的位置作为工作目录 我相信您正在从 IDE(例如 MSVS)运行代码。所以一个想法是打印程序运行的目录并确保那里有一个“inData.txt”文件。看看***.com/a/198099/4289700。 如果你的首要任务是让它工作,我建议使用完整的路径。例如:inFile.open("C:\\myHome\\testFile.txt");。这也是在您的生产代码中做的一个好习惯。 工作目录在进程启动时被初始化。这取决于该过程是如何开始的。你如何开始这个过程? @DavidHeffernan 'Initialized' 不是一个很好的词选择。它由您在开始流程时所处的位置决定。 【参考方案1】:从您的程序所在的同一位置编译并运行该程序。无论它在哪里创建文件 output.txt 都是您的工作目录:
#include <fstream>
int main(int argc, char **argv)
std::ofstream myfile;
myfile.open("output.txt");
myfile << "output\n";
myfile.close();
return 0;
运行程序时,将 inData.txt 文件放在该目录中。
【讨论】:
你可以将文件名传递给std::ofstream
的构造函数,让析构函数为你关闭文件。
我运行了这个,结果发现它与我最初放置“inData.txt”文件的目录相同。
@5MikesOut 您是否从完全相同的位置运行我的程序和您的程序?如果是这样,您可以添加此目录的 ls 输出(或 windows 等效项)吗?以上是关于我的 C++ 程序的工作目录是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章