c++ - 是否有用于向文件路径添加尾部斜杠的习惯用法?

标签 c++ c linux

我有一个程序将文件夹路径作为命令行参数。然后我将其与文件名连接起来以访问这些文件。

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

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

但如果 folder_path 不包含结尾斜杠,这将不起作用。这似乎是一个常见问题,所以我想知道是否有在末尾添加斜线的习语,如果它不存在的话。

最佳答案

如果路径在名为路径名的 std::string 中,我通常会这样做:

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

或者,使用 basic_string::back():

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

如有必要,请为反斜杠添加大小写。

补充:另请注意,*nix 会将路径名中的连续斜杠作为单个斜杠处理。所以在很多情况下,只添加斜线而不检查就足够了。

关于c++ - 是否有用于向文件路径添加尾部斜杠的习惯用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027874/

相关文章:

c - 为什么我可以从 STDOUT 读取并获得用户的终端输入?

c++ - 如何将静态常量变量保留为类的成员

java - Java客户端连接后C服务器崩溃

c# - C# 和 C 程序之间的命名管道通信失败

c - 新手 : C syntax error when compiling

php - 无法使用IP地址连接数据库服务器

c++ - 仅当使用 opengl 3.2 上下文或更高版本时,glVertexAttribPointer 和 glDrawArrays 的 GL_ERROR == 1282

c++ - 在 C++ 中,可以在不破坏原始对象的情况下按值传递临时对象吗?

c++ - 为什么 C++ 将指针和指针数组视为同一事物?

c++ - 从 CIN 声明动态二维数组