ifstream错误使用字符串作为打开文件路径

时间:2013-12-12 02:51:38

标签: c++

这个文件的路径是“/ home / Data / Homework 1 / file.txt”

std::string x = "/home/Data/Homework 1/file.txt"; 
std::ifstream XX(x.c_str())

失败。

2 个答案:

答案 0 :(得分:0)

std::ifstream如何找到给定路径的文件是特定于平台的,但在类Unix系统上,字符串应该简单地传递给open

您可以尝试调试直接调用open(来自<fcntl.h>),和/或在errno构造函数后检查<cerrno>(来自ifstream)回报。

在任何情况下,问题几乎肯定是权限不足或拼写错误。

答案 1 :(得分:0)

您提供的文件路径可能不正确。请仔细检查。 在典型的unix系统中,用户目录是基于帐户的。如果您的帐户名称是Foo,那么您的个人目录应该位于/home/Foo/Data//Homework 1/file.txt而不是/home/Data//Homework 1/file.txt。但这不是强制性的,所以你仍然可以将你的文件放在主目录下,这显然是一种不好的做法。

请检查实际路径,也可以检查您是否有权阅读该文件。