【发布时间】:2018-06-20 01:51:29
【问题描述】:
所以这是一个简单的 C++ 程序,用于读取文件并显示其内容。 我的目录结构如下
项目目录 | 数据___ | | |数据.txt | 程序1.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 个点来工作?
【问题讨论】:
-
路径名是相对于你的当前目录解释的,而不是包含程序的目录。
-
您的 cpp 文件在哪里与搜索开始的位置无关。可执行文件的当前目录是搜索开始的地方。
-
知道了...原来我的可执行文件位于项目目录本身的不同文件夹中...谢谢! @Barmar 和迈克
-
关于
for (int i = 0; !data.eof(); ++i),请阅读Why is iostream::eof inside a loop condition considered wrong?。它可以为您节省一些未来的调试。
标签: c++ file directory file-handling