代码之家  ›  专栏  ›  技术社区  ›  Jaelebi

用C++在UNIX上打开文件

  •  8
  • Jaelebi  · 技术社区  · 17 年前

    我试着在C++中打开一个文件,服务器上运行的进程是基于TUX的。

    string filename = "../dir/input.txt"; works but
    string filename = "~jal/dir1/dir/input.txt"; fails
    

    当提供的文件名为第二种格式时,是否有任何方法在C++中打开文件?

    3 回复  |  直到 17 年前
        1
  •  12
  •   grawity_u1686    17 年前

    这个 ~jal 扩展是由shell(bash/csh/whatever)执行的,而不是由系统本身执行的,因此您的程序正在尝试查找名为 ~jal/ 不是 /home/jal/ .

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

        2
  •  9
  •   Johannes Schaub - litb    17 年前

    你可以扫描字符串,替换 ~user 通过适当的目录。

    这个 POSIX 功能 wordexp 是吗,还有其他一些事情

    • 变量替换,就像你可以使用 $HOME
    • 可选命令替换,例如 $(echo foo) (可以禁用)
    • 算术展开,例如 $((3+4))
    • 分词,如分词 ~/a ~/b 分成两个字
    • 通配符扩展,例如 *.cpp
    • 引用,比如 "~/a ~/b" 仍然是
        3
  •  3
  •   Igor    17 年前

    下面是一段现成的代码,用于执行此任务:

    How do I expand `~' in a filename like the shell does?