ifstream打开文件C++

JuP*_*JuP 5 c++

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

ifstream file;
file.open(path);
file.is_open()
.
.
.
Run Code Online (Sandbox Code Playgroud)

而问题在于道路.当我使用〜/ Desktop/file.txt并运行app时,文件未打开.但是当我调试应用程序时,一切正常.这个问题有什么提示吗?谢谢

小智 6

路径名〜/ Desktop/file.txt将不匹配文件,除非它已经扩展了波形符号,这通常由shell在传递给程序之前完成.如果直接调用它,则需要使用完整路径名

/home/user/Desktop/file.txt
Run Code Online (Sandbox Code Playgroud)

或相对路径

./Desktop/file.txt
Run Code Online (Sandbox Code Playgroud)

我怀疑调试器正在扩展文件名,以便在将其传递给程序之前提供帮助.

  • 用于`~`的正确目录是在`getenv("HOME")`中得到的环境变量`HOME`.因此,如果你得到的文件名是`〜/`,你只需用'HOME`的内容替换代字号,以获得绝对路径.但是请注意,您通常不应该使用从命令行获取的文件名来执行此操作,因为它们应该由shell进行扩展. (2认同)