獲取找到給定選項的INI 文件行號的跨平台方法
問題:
尋找一個C 函式庫(如boost::program_options),它可以傳回找到給定選項或部分的INI 檔案的行號。
用例:
- 要求庫在「[SSS]」部分中尋找值「vvv」。庫應傳回在「[SSS]」部分中找到「vvv」的行號或-1。例如,這允許我們說「第 55 行:vvv 必須
- 迭代 INI 檔案中的部分並驗證它們的名稱。當發現未知部分時,我們可以報告「第55 行:部分[哈哈哈]未知。」
回應:
利用Boost 的可能性Spirit,使用line_pos_iterator 制定了解決方案。
實作細節:
-
POSITIONSINFO = 0:
傳輸。 - 輸出是原始字串格式,或map>>對於部分。
-
POSITIONSINFO = 1:
輸入已緩衝。 - 輸出位於textnode_t 格式:
-
這使得產生的地圖>報告各個文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的確切行和列文本元素的起始點和結束點。 - 註解(#, /
- ... / 樣式)已實作。
空格是可以容忍。 - 斜線轉義留作練習。
- 啟用後會報告錯誤並提供完整的位置資訊。
代碼片段:
其他資源:
[包含完整程式碼、makefile 和example.ini 的要點]( https://gist.github.com/1425972)- [Boost Spirit 文件](https://www.boost.org/doc /libs/1_65_1/libs/spirit/doc/)
-
重要提示:提供的解決方案不需要C 11 支持,但它用於轉儲解析結果。
以上是如何使用 C 取得找到特定選項或部分的 INI 檔案的行號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!