为什么我的C ++程序只能读取绝对目录而不能读取同一文件夹中的文件?

时间:2014-10-05 22:46:45

标签: c++ io ifstream absolute-path

我使用VS2012写了一个小VC ++程序并试图读取文本文件。我把文件放在release文件夹中。但是,在使用绝对文件目录之前,我无法读取该文件。我在网上找不到有用的信息。代码就像这样

#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main()
{
    cout<<"Hello World!"<<endl;
    string test;
    ifstream myfile;
    myfile.open("E:\\Glus\\Project2\\Release\\bunny.txt");
    if(myfile.is_open())
    {
        string s0,s1;
        int x0, x1;
        myfile>>s0>>x0;
        cout<<s0<<x0<<endl;
        myfile>>s1>>x1;
        cout<<s1<<x1<<endl;
    }
    else
    {
        cout<<"Error in reading file!"<<endl;
    }
    myfile.close();
    cin>>test;
    return 0;
}

谢谢!

2 个答案:

答案 0 :(得分:2)

路径不是相对于可执行文件,而是相对于当前目录(请参阅_getcwd)。

如果您从VC启动应用程序,请尝试

"..\\Release\\bunny.txt"

对于真实应用程序,我建议检测可执行文件的路径并使用它来构造数据文件的路径。它更可靠,更安全。

答案 1 :(得分:0)

Visual Studio不会将您的程序保存在您运行它的确切位置,实际上它会将其保存在项目文件夹中与项目名称相同的文件夹中 您可以使用以下命令获取当前工作路径:

system("cd");

它可以解决您的问题,找到您的文件。