使用c ++在unix上打开文件

Jae*_*ebi 8 c++ unix

我试图用c ++打开一个文件,运行的程序服务器基于tux.

string filename = "../dir/input.txt"; works but
string filename = "~jal/dir1/dir/input.txt"; fails
Run Code Online (Sandbox Code Playgroud)

当提供的文件名是第二种格式时,有没有办法用c ++打开文件?

gra*_*ity 12

~jal扩展是由shell执行(庆典/ CSH /不管),而不是由系统本身,所以你的程序正试图寻找到命名的文件夹~jal/,不是/home/jal/.

我不是C编码员,但getpwent()可能是你需要的.


Joh*_*itb 9

您可以扫描字符串,替换~user为相应的目录.

POSIX功能wordexp这样做,和一些其他的东西

  • 变量替换,就像你可以使用 $HOME
  • 可选的命令替换,如$(echo foo)(可以禁用)
  • 算术扩展,就像 $((3+4))
  • 分词,就像~/a ~/b分成两个单词
  • 通配符扩展,就像 *.cpp
  • 引用,就像"~/a ~/b"遗骸一样