linux上的file.open()没有打开我的文件,如何解决?

时间:2015-07-21 13:50:30

标签: c++ linux ifstream

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream file;
    file.open("./cp.txt");
    if(file.good())
    {
        cout << "done!";
    }
    else
    {
        cout << "fail";
    }
    return 0;
}

为什么我的代码可以输入cp.txt文件?它在项目文件夹中。我正在使用gnu / linux。 打开我的意思是该程序将在一些文本编辑器中打开它,即: leafpad

2 个答案:

答案 0 :(得分:3)

  

as open我的意思是该程序将在一些文本编辑器中打开它,即: leafpad

那不会发生。

当您打开ifstream对象时,表示文件已打开以供该对象读取,这并不意味着启动了文本编辑器并显示该文件!

也许你想要的是:

system("leafpad cp.txt");

system函数运行另一个命令,在这种情况下,它运行命令以文件作为参数启动leafpad

请注意,将在您程序的当前工作目录中搜索该文件,该文件与您的&#34;项目目录&#34;不同。如果您在程序运行时不知道当前工作目录是什么,那么您需要提供文件的绝对路径,而不是像cp.txt

这样的相对路径

答案 1 :(得分:0)

你提到过有一个项目文件夹。如果你使用IDE,
它可能会更改正在运行的可执行文件的当前目录 尝试删除文件并在代码中创建文件,例如:

ofstream ofile;
ofile.open("./cp.txt");
ofile.close();

如果您获得输出done!,则搜索该文件。