如何获取从命令行参数调用的文件的目录?
例如,我在 ubuntu 中调用我的可执行文件:
./foo temp/game1.txt temp/game2 txt
我使用 realpath() 来查找 game1.txt 的路径。 但是使用它会给我完整路径,包括 game1.txt 名称。 例如,它将显示为
/home/*/Download/temp/game1.txt
我想删除该字符串上的 game1.txt,以便我可以使用该字符串来输出其他内容该文件夹中的文件。 两个问题。
- realpath() 可以用于这种操作吗?有更好的办法吗?
- 有人可以给我一个快速的方法来删除“game1.txt”,以便该字符串将以字符串格式(而不是字符)保存为“/home/*/Download/temp/”吗?
非常感谢。
For example, I am calling my executable in ubuntu:
./foo temp/game1.txt temp/game2 txt
I am using realpath() to find the path to the game1.txt.
Using it however will give me the full path including the game1.txt name.
For example, it will come out as
/home/*/Download/temp/game1.txt
I want to erase game1.txt on that string so that I can use the string to use it to output other files in that folder.
Two questions.
- Is realpath() alright to use for this kind of operation? Is there better way?
- Can someone give me a quick way to erase "game1.txt" so that the string will be "/home/*/Download/temp/" save in a string format(not char)?
Thank you very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不太了解 Linux,但解决第二个问题的一般方法是:
在 Ideone 上查看。
Don't really know Linux, but a general way for your second question:
See on Ideone.
您可以使用 dirname 函数来实现此目的: http://linux.die.net/man/3/ dirname
注意dirname会删除尾部的斜杠(根目录除外);当您附加文件名时,您必须将斜杠附加回来。
另外,您实际上并不需要为此目的使用 realpath,您可以简单地使用传入的参数,dirname 将为您提供“temp”,您可以将文件名附加到其中。
You can use the dirname function for this: http://linux.die.net/man/3/dirname
Note that dirname will erase the trailing slash (except for the root directory); you'll have to append the slash back in when you append the filename.
Also, you don't actually need to use realpath for this purpose, you could simply use the argument as passed in, dirname will give you "temp" and you can append filenames to that.
应该做你想做的
should do what you want
跨平台的解决方案是
Boost.Filesystem 也可以轻松做到这一点。我只是发现 QFileInfo 的文档很容易导航。
http://doc.qt.nokia.com/4.6/qfileinfo.html#absolutePath
The cross-platform solution is
Boost.Filesystem can also do this easily. I just find the documentation of QFileInfo easily to navigate.
http://doc.qt.nokia.com/4.6/qfileinfo.html#absolutePath