Boost Filesystem flowly_caronical不会在没有父文件夹的情况下解决相对路径
Boost filesystem weakly_canonical does not resolve relative paths without parent folders
我想在Windows和Linux中使用Boost Filesystem的相对路径获得绝对的规范路径。我希望它也适用于不存在的路径。
我使用的是flowly_canonical(路径相对路径(,自增强1.60以来可用。但它的行为不像预期(至少在Windows中(。
通过无父文件夹的相对路径,即``foo''之类的原始文件名或文件夹名称,flowly_caronical返回相同的未触摸路径(在这种情况下为" foo"(,而绝对(Path相对路径(预示当前路径(正如我所期望的((" current_dir/foo"(。
所以最后,我被迫首先称呼绝对,然后弱canical以使其起作用。
请参阅带有两种情况的摘要。
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
using boost::filesystem;
path relativePath("foo");
path canonical_path = weakly_canonical(relativePath);
path abs_canonical_path = weakly_canonical(absolute(relativePath));
std::cout << "Using weakly_canonical: "
<< canonical_path.string()
<< std::endl;
std::cout << "Using weakly_canonical and absolute: "
<< abs_canonical_path.string()
<< std::endl;
例如,如果current_path为" c: path to some folder",我正在获得:
- selverpath =" ./foo"
Using weakly_canonical: C:pathtosomefolderfoo
Using weakly_canonical and absolute: C:pathtosomefolderfoo
- 相对路径=" ../foo"
Using weakly_canonical: C:pathtosomefoo
Using weakly_canonical and absolute: C:pathtosomefoo
- 相对路径=" foo"
Using weakly_canonical: foo
Using weakly_canonical and absolute: C:pathtosomefolderfoo
最后一个案例让我感到困惑,因为我希望flowly_caronical也可以预先使用当前的工作dir。
一起使用绝对和弱的canonical是否正确?还是我滥用fielly_caronical?
文档说:'返回:由在由canonical
函数调用CC_1函数的结果组成的路径组成的路径中如果有的话,p
的元素不存在。
重要的位置是canonical
(确实是构造绝对路径(仅当p
的领先元素实际上存在时才调用。
如果您在不存在第一个元素的相对路径上调用weakly_canonical
,则根本不调用canonical
,如果使用点,则仅调用以下部分。因此,如果此路径没有,weakly_canonical("foo")
可以返回foo
存在或如果确实存在的绝对路径。
对于std::filesystem::weakly_canonical
的不同实现,我可以测试。
如果您想确保具有规范路径的绝对形式,则可以在weakly_canonical
之后致电absolute
:
boost::filesystem::absolute(boost::filesystem::weakly_canonical("foo"))
好吧,文档说" 返回p symlinks已解决的p,结果归一化"它并不是说它会成为完整的路径。您的" foo"在路径上没有符号链接,没有点。
- 是否可以在没有真实文件的情况下创建 ifstream
- 如何在添加文件的情况下在VSCode中调试C++程序
- 每个文件(理想情况下是每个部分)的 clang 格式样式覆盖
- 如何在不重新创建现有文件的情况下写入.txt文件
- C++-在没有自定义.lib文件的情况下从Lua C模块调用Lua函数
- 在没有外部文件的情况下在应用会话之间保存变量
- 有谁知道ziplib是否能够在不实际提取所有文件的情况下验证zip库
- 如何创建像标准库头一样的头,以便在不链接头中函数的所有对象文件的情况下编译程序?
- 如何减少编译时间:在包含未触及的头文件的情况下
- 如何在不重写整个视频文件的情况下仅替换流中的一个数据框架?(ffmpeg)
- C++ 在不打开文件的情况下访问IMAGE_OPTIONAL_HEADER64?
- 使用QT,如何在不读取整个文件的情况下删除文本文件中的第一行
- 如何在不保存文件的情况下制作打印屏幕并将其发送到FTP服务器?我的工作代码将文件保存到HDD
- C/C++:在不使用临时文件的情况下压缩(gz)数据
- 我可以在没有文件的情况下创建句柄吗
- 在不包含文件的情况下从文件中获取特定的c++函数
- 是否可以在不使用任何头文件的情况下在C++中执行I/O操作
- 在C中,在硬盘驱动器上没有文件的情况下写入文件steam
- 在没有PDB文件的情况下,是否可以在Windows上获得堆栈跟踪?如果是,如何
- 如何在不触及该目录中的文件的情况下找到文件夹更改(使用Windows和c++)