我想在C++中打开一个文件。打开文件C++错误
我的文件位于/home/me/myproject/mydir/myfile.txt
我在该文件存在,并且不为空,我的文件系统检查。
我GETCWD(),我在/ home/ME/myproject的是检查/
因此,我试图打开它:
string myfilename;
ifstream myfile;
myfilename = "./mydir∕myfile.txt";
myfile.open(myfilename.c_str(), ios::in);
if (myfile.fail()) {
// I always end up here.
}
我真的不明白为什么myfile.fail ()总是返回true。任何想法为什么它,或者我可以执行什么调试测试来理解为什么它的行为如此?
我发现有什么不对,谢谢大家。我使用的远程控制软件显然认为“/”(正斜杠)不同于“/”(分割字符)。尽管我仍然有一个问题困扰着我,但我会在另一篇文章中提问。 errno和strerror()帮助我理解错误。这些错误很难找到,对不起,它与C++代码没有严格的关系。
(注:我在这里回答,因为显然我不能回答我自己的问题)。
尝试使用绝对路径'/ home/me/myproject/mydir/myfile.txt'来打开文件。 – Isaac 2012-04-23 11:50:36
我认为这可行,但一定要检查您正在运行的进程已读取该文件的文件系统权限。 http://en.wikipedia.org/wiki/Filesystem_permissions#Traditional_Unix_permissions – HostileFork 2012-04-23 11:52:20
当操作失败时,打印出'errno'的值,或者['strerror'](http://linux.die.net/man/ 3/strerror)得到一个可读的字符串。 – 2012-04-23 11:53:11