微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有一个成语添加尾部斜线到文件path?

我有一个程序,将文件夹path作为命令行参数。 然后我连接到文件名来访问这些文件

例如,folder_path是“./config/”,然后file_path将是“./config/app.conf”,如下所示

stringstream ss; ss << folder_path << "app.conf"; file_path = ss.str();

但是,如果folder_path不包含结尾斜杠,这将不起作用。 这似乎是一个普遍的问题,所以我想知道是否有一个成语,如果不存在,最后加上斜线。

使用AsParallel()时无法获取与Windows应用程序关联的文件文件图标

为什么在Vista / 7中,RequestAdditionalTime()方法不能重新启动?

Windows 10使用桌面应用程序的通知

MMAP中的ENODEV错误

读取二进制文件,Linux缓冲区caching

符号查找错误(linux – c ++)

用C ++读取和解释内存页面文件

如何将二进制数据写入文件以便快速读取?

从Code :: Blocksconfigurationg ++不会影响命令行

按值传递std :: function <bool(int)>

我通常这样做,如果路径是在一个名为路径名的std :: string:

if (!pathname.empty() && *pathname.rbegin() != '/') pathname += '/';

或者,用basic_string :: back():

if (!pathname.empty() && pathname.back() != '/') pathname += '/';

如有必要,添加一个反斜杠的例子。

补充:另外请注意,* nix将把路径名称中的连续斜线作为一个斜杠来处理。 所以在许多情况下,只要总是添加一个斜线而不检查就足够了。

如果你有一个额外的斜杠,Linux不会在意,所以/ home / user / hello和/ home / user / hello是相同的位置。 您可以添加斜杠作为故障安全。 或者,您可以通过检查最后一个字符来检查它。

使用C ++ 14 / C ++ 17 std::filesystem

#include <experimental/filesystem> // C++14. namespace fs = std::experimental::filesystem; // C++14. //#include <filesystem> // C++17. //namespace fs = std::filesystem; // C++17. void addTrailingDelimiter(fs::path& path) { if (!path.empty() && path.generic_string().back() != '/') path += '/'; }

留意fs::path::generic_string() 。 这样你就不必检查本地路径分隔符 (WinAPI native!= generic,而Posix native = generic)。

因为Posix和WinAPI不关心几个连续的路径分隔符,所以你可能会忽略if (path.generic_string().back() != '/') 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐