,同時通過我閱讀文檔會是諒解的精神語法
由逗號分隔雙打的字符串,我們可以這個樣子(我的理解)
double_ >> * (',' >> double_)
或double_ %
但下面的表達意味着什麼。它應該將逗號分隔的字符串分割成一個向量,它可以工作。如果有人能夠善意澄清,我將不勝感激。我很困惑與-
運營商,我相信它的不同運營商,但我不能在這裏
*(qi::char_ - ',') % ','
,同時通過我閱讀文檔會是諒解的精神語法
由逗號分隔雙打的字符串,我們可以這個樣子(我的理解)
double_ >> * (',' >> double_)
或double_ %
但下面的表達意味着什麼。它應該將逗號分隔的字符串分割成一個向量,它可以工作。如果有人能夠善意澄清,我將不勝感激。我很困惑與-
運營商,我相信它的不同運營商,但我不能在這裏
*(qi::char_ - ',') % ','
*(char_ - ',')
表示「匹配零個或多個字符,但匹配','」,它也可以這樣寫:*~char_(",")
。另一方面,*char_
意味着「匹配零個或多個字符」。
要理解,爲什麼需要排除,只好試一下,沒有它:
#include <string>
#include <boost/spirit/home/qi.hpp>
int main()
{
using namespace boost::spirit::qi;
std::vector<std::string> out1, out2;
std::string s = "str1, str2, str3";
bool b = parse(s.begin(), s.end(), *~char_(",") % ",", out1); // out1: ["str1", "str2", "str3"]
b = parse(s.begin(), s.end(), *char_ % ",", out2); // out2: ["str1, str2, str3"]
}
qi::char_ - ','
比賽找出其角色的所有字符,但,
防止過於貪婪的內心表達。
你真的需要閱讀EBNF標準來理解Boost.Spirit。
感謝那些幫助 – Rajeshwar
+1的解釋和'〜charset'參考 – sehe