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