【发布时间】:2015-04-04 00:59:43
【问题描述】:
我知道这似乎是一个简单的问题,但我尝试了所有我能想到的方法,但对于原本不应该成为问题的事情却无济于事。
这是一个打开文件的小型 C++ 程序。当我用它的绝对文件路径打开它时,它工作正常。但是,对于相对路径,它会停止工作。
这是程序的文件路径和我要读取的文件:
C++ 程序: "/Users/Baggio/C++/Lab0/Lab0/Lab0/main.cpp"
文件: /Users/Baggio/C++/Lab0/Lab0/Lab0/result.txt, /Users/Baggio/C++/Lab0/Lab0/Lab0/dict.txt
这里是代码 sn-p:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cstdlib>
using namespace std;
int main(int argc, const char * argv[]) {
// string dict_filename = "/Users/Baggio/C++/Lab0/Lab0/Lab0/dict.txt";
// string result_filename = "/Users/Baggio/C++/Lab0/Lab0/Lab0/result.txt";
string dict_filename_string = "dict.txt";
string result_filename_string = "result.txt";
const char* dict_filename = dict_filename_string.c_str();
const char* result_filename = result_filename_string.c_str();
// open files
ifstream dict_file(dict_filename, ifstream::in);
ifstream result_file(result_filename, ifstream::in);
if (!dict_file || !result_file) {
cerr << "File could not be opened." << endl;
exit(1);
}
}
执行结果
File could not be opened.
我确信我已经正确地完成了所有的包含,以及 ifstream 构造函数参数的数据类型。我能想到的唯一值得一提的是我使用的系统:我在 Mac 上,我使用 XCode6 作为我的 IDE。
另外,我尝试将文件的位置(results.txt 和 dict.txt)移动到这些位置,但无济于事:
/Users/Baggio/C++/Lab0/Lab0/Lab0/
/Users/Baggio/C++/Lab0/Lab0/
/Users/Baggio/C++/Lab0/
/Users/Baggio/C++/
谢谢你们的帮助!!任何建议或想法表示赞赏。
【问题讨论】:
-
是的,没错!错字错了... -__-"
-
我会添加 xcode 标签,因为我认为这可能是问题所在 - 程序运行的路径可能不是源文件位置。您也可以尝试让文件路径字符串类似于“./dict.txt”。
-
是的,我也试过了,但没用。
-
嗯,你可以尝试一个函数来创建一个文件,指定一个相对路径,如果成功,搜索文件的创建位置?
标签: c++ xcode xcode6 relative-path ifstream