我在C ++程序中打开.txt文件时遇到问题

时间:2015-02-03 18:51:45

标签: c++

我把它放在Source Files文件夹下。我已将我的工作目录设置为$(SolutionDir)$(配置)\(我不确定这是否正确,我在某处看到了)有人可以帮助我排除故障。

int main()
{
    cout << "program running" <<endl;
    pair<int, unsigned int> mypair;

    ifstream myfile;
    myfile.open("numbers.txt", ios::in);
    if (!myfile.is_open()){
        cerr << "can't open input file" << endl;
    }
    else
    {
        cout << "file opened" << endl;
    }
    getchar();
    myfile.close();
}

...输出是:无法打开输入文件

3 个答案:

答案 0 :(得分:2)

要确定您指向的目录,请尝试创建一个新文件,而不是打开一个:

std::ofstream("out_test.txt");

然后您可以使用文件资源管理器将该文件搜索到解决方案目录中。

答案 1 :(得分:1)

有一个应用程序的当前目录。当您从VS工作目录运行应用程序时,将是当前的应用程序。

如果指定具有相对路径的文件名(或根本没有路径),OS将尝试查找相对于该目录的文件。其中可执行文件和特别是源文件完全无关。因此,解决方案可以是将工作目录设置为numbers.txt所在的位置(或在那里移动nubers.txt),或使用类似foobar/numbers.txt或甚至../foobar/numbers.txt之类的相对路径等或使用绝对路径路径。

答案 2 :(得分:1)

好吧,我设法弄清楚..有帮助:)我做了保罗M说的话:

To figure out what directory you're pointing to, try to create a new file instead of opening one:

std::ofstream("out_test.txt");

Then you can find that file searching with File Explorer into the solution dir.

在我弄清楚文件发送到哪里后,我向该目录添加了一个带有一些整数的新文件,并确保工作目录是相同的。我不确定是否必须更改它? (可以将文件发送到其他地方吗?)。

之前我曾试图这样做,但我无法通过复制粘贴将我的txt文件移动到此目录中。所以放弃了。但无论如何我只是右键单击/新文本文档/并用一些数字编辑了文档。然后改变我的程序打开这个新文档。 直接将文件保存到该目录也有效。 :) :) :) :) 但我很好奇为什么我不能把它贴在那里?