我正在尝试在 C++ 中打开一个文件,而程序运行的服务器是基于 Tux 的。 string filename = "../dir/input.txt"; works but string filename = "~jal/dir1/dir/input.txt"; fails 如果提供的文件名是第二种格式,有没有办法在C++中打开文件?
~jal 的扩展是由 shell (bash/csh/whatever) 执行的,而不是系统本身执行的,因此您的程序试图查看名为 ~jal/ 而不是 /home/jal/ 的文件夹。 我不是 C 语言编程人员,但可能你需要使用 getpwent() 函数。
您可以扫描字符串,将~user替换为适当的目录。 POSIX函数wordexp可以完成此操作,还有其他一些功能: 变量替换,例如可以使用$HOME 可选命令替换,例如$(echo foo)(可禁用) 算术扩展,例如$((3+4)) 单词拆分,例如将~/a ~/b拆分成两个单词 通配符扩展,例如*.cpp 以及引用,例如"~/a ~/b"保持不变
/jal/dir1/dir/input.txt" 而不是 "jal/dir1/dir/input.txt"。 - Tebe