C++ 如何格式化没有引号的boost路径对象?
这是我的密码:C++ 如何格式化没有引号的boost路径对象?,c++,boost,path,C++,Boost,Path,这是我的密码: fs::path datadir = ...; std::string dataDirOption((boost::format("--datadir=%1%") % datadir).str()); 对于datadir==“c:/db”我得到的是dataDirOption==“c:/db\”,而不是“--datadir=c:/db” 格式化时是否可以告诉boost::filesystem::path跳过引号 现在,我知道我可以用datadir.string()代替datadi
fs::path datadir = ...;
std::string dataDirOption((boost::format("--datadir=%1%") % datadir).str());
对于datadir==“c:/db”
我得到的是dataDirOption==“c:/db\”
,而不是“--datadir=c:/db”
格式化时是否可以告诉boost::filesystem::path
跳过引号
现在,我知道我可以用datadir.string()
代替datadir
,并用这种方式去掉引号,但我想知道我是否可以不用额外的字符串来完成这项工作
谢谢。我建议另一种选择:后期处理
boost::replace_all(dataDirOption, "\"", "");
通过这种方式,您可以轻松地切换到另一个引号字符,例如”
。,对于路径,它实际上是如下所示:
os << boost::io::quoted(p.string<std::basic_string<Char>>(), static_cast<Char>('&'));
os不,它不是,它是boost framework 1.47.0版上的一个文件,尚未给出何时修复的里程碑
不过,解决办法是:
std::cout << path("/foo/bar.txt").filename().string()
std::难道我认为Boost只是为了安全起见,以防路径中有空格。我理解这一点,但我正在为mysqld数据库引擎编写一个命令行,它确实不喜欢额外的引号。