【问题标题】:ifstream open file C++ifstream 打开文件 C++
【发布时间】:2012-10-07 14:37:55
【问题描述】:

我对 ifstream 打开功能有疑问。我在netbeans的linux下创建应用程序。 我的代码是:

ifstream file;
file.open(path);
file.is_open()
.
.
.

问题出在路径上。当我使用 ~/Desktop/file.txt 并运行应用程序时,文件未打开。但是当我调试应用程序时,一切正常。 这个问题的任何提示? 谢谢

【问题讨论】:

    标签: c++


    【解决方案1】:

    路径名 ~/Desktop/file.txt 将不匹配文件,除非它扩展了波浪号字符,这通常由 shell 在将其传递给程序之前完成。 如果您直接调用它,那么您需要使用完整路径名

    /home/user/Desktop/file.txt
    

    或相对路径

    ./Desktop/file.txt
    

    我怀疑调试器在将文件名传递给程序之前正在扩展文件名以便对您有所帮助。

    【讨论】:

    • ./Desktop/file.txt 不工作。但它也必须与 ~ 一起使用。
    • 这在很大程度上取决于您如何调用命令,以及从哪个目录调用。
    • ~ 使用的正确目录位于环境变量HOME 中,您可以使用getenv("HOME") 获得。因此,如果您获得的文件名以~/ 开头,您只需将波浪号替换为HOME 的内容即可获得绝对路径。但是请注意,您通常应该使用从命令行获得的文件名来执行此操作,因为它们预计会被 shell 扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多