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数据库引擎编写一个命令行,它确实不喜欢额外的引号。