首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何(安全地)从单独的字符串构建完整的路径字符串?

如何(安全地)从单独的字符串构建完整的路径字符串?
EN

Stack Overflow用户
提问于 2011-06-10 02:50:53
回答 6查看 92.8K关注 0票数 97

C++有没有与python的os.path.join函数等效的函数?基本上,我正在寻找将文件路径的两个(或更多)部分组合在一起的东西,这样你就不必担心确保这两个部分完美地结合在一起。如果它是用Qt写的,那也很酷。

基本上,我花了一个小时调试一些代码,至少部分原因是因为root + filename必须是root/ + filename,我希望在未来避免这种情况。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-10 03:08:30

请查看QDir

代码语言:javascript
运行
复制
QString path = QDir(dirPath).filePath(fileName);
票数 47
EN

Stack Overflow用户

发布于 2011-06-10 02:57:15

仅作为Boost.Filesystem库的一部分。下面是一个示例:

代码语言:javascript
运行
复制
#include <iostream>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;

int main ()
{
    fs::path dir ("/tmp");
    fs::path file ("foo.txt");
    fs::path full_path = dir / file;
    std::cout << full_path << std::endl;
    return 0;
}

以下是编译和运行(特定于平台)的示例:

代码语言:javascript
运行
复制
$ g++ ./test.cpp -o test -lboost_filesystem -lboost_system
$ ./test 
/tmp/foo.txt
票数 104
EN

Stack Overflow用户

发布于 2011-06-10 03:11:46

至少在Unix / Linux中,通过/连接部分路径总是安全的,即使路径的某些部分已经以/结尾,即root/path等同于root//path

在这种情况下,你真正需要做的就是在/上加入一些东西。也就是说,我同意其他答案,如果你可以使用boost::filesystem,那么它是一个很好的选择,因为它支持多种平台。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6297738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档