相对路径中的错误

时间:2018-01-10 19:55:11

标签: c++ file directory file-handling

所以这是一个简单的C ++程序,用于读取文件并显示其内容。 我的目录结构如下

Project Directory
|
Data___
|      |
|      data.txt
|
program1.cpp

和程序:

#include <iostream>
#include <fstream>

using namespace std;

int main () {
    char char1;

    fstream data; // Because I wanna to write to this file later.
    data.open("../Data/data.txt",ios::out | ios::in);

    if (data.is_open()) {
        for (int i = 0; !data.eof(); ++i) {
            data.get(char1);
            cout << char1 << endl;
        }
        data.close();
    }

    return 0;
}

所以目前我的程序工作正常...但是当我使用时:

data.open("Data/data.txt",ios::out | ios::in);

该程序不起作用。为什么会这样?理想情况下,上面提到的代码段应该可以工作,因为 Data 文件夹与我的cpp文件位于同一目录中。

data.open("../Data/data.txt",ios::out | ios::in);

通过使用2个点,我们返回一个目录,而Data文件夹不存在。

那么为什么程序使用2点?

1 个答案:

答案 0 :(得分:0)

查看你的目录结构,我看到你的program1.cpp和data.txt都在同一个&#34; Data&#34;夹。由于您已经在Data文件夹中,&#34; Data / data.txt&#34;寻找另一个Data文件夹。在UNIX&#34; ..&#34;表示上一个目录。所以当你使用&#34; ..&#34;你去了项目目录&#34;,其中包含一个&#34;数据&#34;夹。这就是data.open(&#34; ../ Data / data.txt&#34;,ios :: out | ios :: in)正常工作的原因。您还可以尝试使用以下内容: data.open("data.txt",ios::out | ios::in);