簡體   English   中英

如何在沒有引號的情況下格式化boost路徑對象?

[英]How can I format the boost path object without quotes?

這是我的代碼:

fs::path datadir = ...;
std::string dataDirOption((boost::format("--datadir=%1%") % datadir).str());

對於datadir=="c:/db"我得到dataDirOption=="--datadir=\\"c:/db\\"" ,而不是"--datadir=c:/db"

是否有可能告訴boost::filesystem::path在格式化時跳過引號?

現在,我知道我可以用datadir替換datadir.string()並以這種方式刪除引號,但我想知道是否可以在沒有額外字符串的情況下這樣做。

謝謝。

不,它不是,是一個增強框架版本1.47.0上的錯誤文件,尚未給出何時修復的里程碑。

然而,解決方法是:

std::cout << path("/foo/bar.txt").filename().string()

format%運算符使用<< stream-insertion運算符作為用戶定義的類型文檔告訴我們它的path實際上是以下內容:

os << boost::io::quoted(p.string<std::basic_string<Char>>(), static_cast<Char>('&'));

要省略引號,您需要傳遞與format對象不同的內容,例如您已經發現的string方法的輸出。

我建議另一個選擇:后期處理。

boost::replace_all(dataDirOption, "\"", "");

通過這種方式,您可以輕松切換到另一個引用字符,例如'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM