【发布时间】:2012-10-07 14:37:55
【问题描述】:
我对 ifstream 打开功能有疑问。我在netbeans的linux下创建应用程序。 我的代码是:
ifstream file;
file.open(path);
file.is_open()
.
.
.
问题出在路径上。当我使用 ~/Desktop/file.txt 并运行应用程序时,文件未打开。但是当我调试应用程序时,一切正常。 这个问题的任何提示? 谢谢
【问题讨论】:
标签: c++
我对 ifstream 打开功能有疑问。我在netbeans的linux下创建应用程序。 我的代码是:
ifstream file;
file.open(path);
file.is_open()
.
.
.
问题出在路径上。当我使用 ~/Desktop/file.txt 并运行应用程序时,文件未打开。但是当我调试应用程序时,一切正常。 这个问题的任何提示? 谢谢
【问题讨论】:
标签: c++
路径名 ~/Desktop/file.txt 将不匹配文件,除非它扩展了波浪号字符,这通常由 shell 在将其传递给程序之前完成。 如果您直接调用它,那么您需要使用完整路径名
/home/user/Desktop/file.txt
或相对路径
./Desktop/file.txt
我怀疑调试器在将文件名传递给程序之前正在扩展文件名以便对您有所帮助。
【讨论】:
~ 使用的正确目录位于环境变量HOME 中,您可以使用getenv("HOME") 获得。因此,如果您获得的文件名以~/ 开头,您只需将波浪号替换为HOME 的内容即可获得绝对路径。但是请注意,您通常不应该使用从命令行获得的文件名来执行此操作,因为它们预计会被 shell 扩展。