rus*_*tyx 2 c++ boost boost-filesystem
我需要将绝对路径A与路径B结合起来,因为B既可以是相对的也可以是绝对的,最好使用boost :: filesystem。
换句话说,我想拥有:
/usr/home/+ abc=/usr/home/abc/usr/home/+ ../abc= /usr/home/../abc(或者甚至更好/usr/abc- 这不是我的问题)/usr/home/+ /abc=/abc前两个对于/操作员来说很容易,但是我无法使第三个工作。
我试过了:
std::cout << boost::filesystem::path("/usr/home/") / "/abc";
Run Code Online (Sandbox Code Playgroud)
印刷品/usr/home//abc。
std::cout << boost::filesystem::path("/usr/home/") + "/abc";
Run Code Online (Sandbox Code Playgroud)
仍然打印/usr/home//abc。
当然,通过查看路径B并使用它,我可以“看到”路径B是绝对路径,但我不想硬编码前导的检查,/因为在Windows上路径可以不同(例如C:\\或\\)。
boost::filesystem::path具有成员函数is_absolute()。因此,您可以基于此选择操作(串联还是替换)。
path a = "/usr/home/";
path b = "/abc";
path c;
if (b.is_absolute())
c = b;
else
c = a / b;
Run Code Online (Sandbox Code Playgroud)
也有is_relative()相反的。
| 归档时间: |
|
| 查看次数: |
2125 次 |
| 最近记录: |