【问题标题】:Files created in C++ can't be found [duplicate]找不到用 C++ 创建的文件 [重复]
【发布时间】:2014-12-17 15:25:12
【问题描述】:

我想使用 C++ 创建文件,然后我可以将其导出以供其他地方使用。下面的代码似乎可以创建文件,因为我可以将数据写入文件,然后稍后在 C++ 程序中再次读取它。但是,当我尝试实际找到创建的文件以便使用它时,却无处可寻..

using namespace std;

int main () {

    ofstream myfile ("example3.dat");
    if (myfile.is_open()){

        myfile << 3335 << " " << 64  << " " << 43 <<  9 << 5 << 6 << 5 << 4 << 6;
        myfile.close();
    }
    else cout << "Unable to open file";

    ifstream myfile2 ("example3.dat");

    int b;
    myfile2 >> b; cout <<b;
    myfile2 >> b; cout <<b;
    myfile2.close();

    return 0;
}

【问题讨论】:

  • cd / find . -name example3.dat -print
  • @sleeping_dragon:当前目录并不总是exe的目录。
  • 可以在Debug文件夹中吗?
  • 这个问题似乎是题外话,因为它是关于在您的计算机硬盘驱动器上查找文件。
  • 澄清@sleeping_dragon 的评论 - 文件将位于您运行程序的目录中,因为该程序仅使用文件名,并且从不更改目录。如果您将其运行为例如,这很可能与程序本身的位置不同。 /path/to/my/program...

标签: c++


【解决方案1】:

文件将在进程工作目录中创建。

如果进程是从 IDE(例如 Visual Studio)运行的,工作目录可能与可执行文件路径不同。您应该检查项目属性以找出实际路径。

【讨论】:

    【解决方案2】:

    当然,您可以按照上面 cmets 中的建议搜索该文件,但您最好在程序中指定一个绝对路径,以便您知道它的写入位置。

    路径的格式是特定于操作系统的,但可能

    /tmp/example.dat
    
    C:\Windows\Temp\example.dat
    

    分别适用于 Linux 和 Windows(但您需要自己决定;这些只是示例)。

    【讨论】:

    • 一般来说,将绝对路径硬编码到计算机程序中是一个可怕的想法。
    • @LightnessRacesinOrbit 它取决于上下文。如果你知道你想要文件去哪里,并且它是用于非常特定目的的代码,那没关系。更好的选择是允许用户指定位置,但这是 OP 可能不需要的额外复杂性。
    • 在一般情况下,您应该使用当前工作目录。这是一个有原因的概念!这通常比您能想到的任何其他方法更少复杂性,所有条件都相同。
    • @LightnessRacesinOrbit 是的,我同意这是典型案例(如果您了解 cwd 的概念,这是正确的做法)。
    • 任何不理解 cwd 概念的程序员都应该在决定不使用 cwd 之前了解它的概念。然后他们应该决定使用它。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多