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

ifstream error using string as opening file path

本文关键字:路径 错误 ifstream 文件 字符串      更新时间:2023-10-16

文件的路径this的"/home/Data/Homework 1/file.txt"

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

失败。

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

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

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

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

因此,请检查实际路径,也许还可以检查您是否有读取文件的权限。