c/c++语言开发共享如何获取从命令行参数调用的文件的目录?

例如,我在ubuntu中调用我的可执行文件:

./foo temp / game1.txt temp / game2 txt

我使用realpath()来查找game1.txt的路径。 但是使用它会给我一个完整的路径,包括game1.txt名称。 例如,它将作为

/ home / * /Download/temp/game1.txt

我想删除该字符串上的game1.txt,以便我可以使用该字符串来输出该文件夹中的其他文件。 两个问题。

非常感谢你。

    不是真的了解Linux,而是第二个问题的一般方法:

    #include  #include  int main(){ std::string fullpath("/home/*/Download/temp/game1.txt"); size_t last = fullpath.find_last_of('/'); std::string path = fullpath.substr(0,last+1); std::cout << path; } 

    请参阅Ideone 。

    您可以使用dirname函数: http : //linux.die.net/man/3/dirname

    请注意,dirname将删除尾部斜杠(根目录除外); 在附加文件名时,你必须将斜杠附加回来。

    此外,您实际上并不需要为此目的使用realpath,您只需使用传入的参数,dirname将为您提供“temp”,您可以将文件名附加到该文件名。

      man -S3 dirname 

    应该做你想做的事

    跨平台解决方案是

     QFileInfo target_file_name(argv[1]); QString absolute_path = target_file_name.absolutePath() // eg /home/username/ QString some_other_file = QString("%1/another_file.txt").arg(absolute_path) // => /home/username/another_file.txt 

    Boost.Filesystem也可以轻松完成。 我只是轻松地找到了QFileInfo的文档。

      以上就是c/c++开发分享如何获取从命令行参数调用的文件的目录?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519503.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐