我正在用 C++ 编写一个程序,它接受文件名作为命令行上的参数:
>> ./myprogram ../path/to/file.txt
我知道我可以使用 简单地打开一个 fstream argv[1]
,但程序需要有关文件的确切位置(即完整路径名)的更多信息。
我考虑过附加argv[1]
到getcwd()
,但显然在上面的示例中你最终会得到/path/../path/to/file.txt
. 不确定 fstream 是否会自动解析该路径,但即使确实如此,如果没有大量字符串处理,我仍然没有完整路径。
当然,如果提供的路径已经是绝对路径,则该方法根本不起作用。并且由于该程序可能在 Linux/Windows/etc 上运行,因此仅检测起始 '/' 字符将无法确定参数是否为完整路径。
我认为这是处理跨多个操作系统的路径名的一个相当普遍的问题。那么如何检索命令行参数的完整路径名以及在操作系统之间如何处理呢?