在boost中获得绝对路径
我的主目录中有一个文件:在boost中获得绝对路径,boost,Boost,我的主目录中有一个文件: ~/abc.csv 我想得到完整的绝对路径,即: /home/nishant/abs.csv 我怎么得到它 我认为canonical会有所帮助,但要使canonical发挥作用,文件应该存在,并且~/abc.csv上的存在函数返回false。这并没有使路径成为绝对路径,也没有使其成为规范路径 它是~字符的shell扩展。而且它本身并不是Boost文件系统中的一个特性 您可以自己编写代码: #include <boost/filesystem.hpp>
~/abc.csv
我想得到完整的绝对路径,即:
/home/nishant/abs.csv
我怎么得到它
我认为canonical会有所帮助,但要使canonical发挥作用,文件应该
存在
,并且~/abc.csv
上的存在
函数返回false。这并没有使路径成为绝对路径,也没有使其成为规范路径
它是~
字符的shell扩展。而且它本身并不是Boost文件系统中的一个特性
您可以自己编写代码:
#include <boost/filesystem.hpp>
#include <iostream>
using boost::filesystem::path;
path expand(path p) {
char const* const home = getenv("HOME");
if (home == nullptr)
return p; // TODO handle as error?
auto s = p.generic_string<std::string>();
if (!s.empty() && s.find("~/") == 0u) {
return home + s.substr(1);
}
return p;
}
int main() {
path sample = "~/test.cpp";
std::cout << expand(sample) << "\n";
}
#包括
#包括
使用boost::filesystem::path;
路径扩展(路径p){
char const*const home=getenv(“home”);
if(home==nullptr)
返回p;//TODO句柄为错误?
自动s=p.通用字符串();
如果(!s.empty()&&s.find(“~/”==0u){
回家+s.substr(1);
}
返回p;
}
int main(){
路径示例=“~/test.cpp”;
非常感谢……我以为在linux操作系统的情况下,扩展将由Boost处理