我的 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++ 程序的工作目录是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio for C++ 中更改工作目录

这个符号在 C++ 中是啥意思? [复制]

C++ 放置新的工作原理是啥?

带有命令行应用程序的 MacOSX C++ 工作目录

C++ “**.exe已停止工作”是啥原因?

让我的 SQL Server CE 在我的 Web 主机上工作的所有步骤是啥