2013-10-17 79 views
2

我敢肯定,我不是第一個遇到這種情況,仍然無法找到任何具體的東西,既不在這裏,也不是一般。格式化字符串流

我使用的是舊的記錄器,使用中的printf格式......例如: -

LOG_ERROR("Error Code: %d. Additional data %s", error.ID, error.serialize()); 

而且要移動到流式記錄儀。例如:

LOG_ERROR("Error Code: " << error.ID << "Additional data: " << error.serialize()); 

當然,代碼庫很大,我想自動執行此操作。我想我可以想出一個腳本,但它看起來並不那麼微不足道......我確信有一個非常簡單的方法。 謝謝!

回答

1

我不敢自動執行該任務。 您可以將所有舊的LOG_ERROR重命名爲(類似於)LOG_ERROR_FORMAT,讓LOG_ERROR_FORMAT創建一個字符串並將其傳遞給新的LOG_ERROR。

如果你真的想要去的話,我建議看看一些printf的執行情況讓解析正確

+0

自發布,我也來到了一個結論,那就是從沒有簡單的方法,但我要去抓住我的機會,並嘗試解析那些「找到第一個左括號,然後找到第一個引號,然後找到第一個沒有轉義的」%「,然後用最後一個沒有轉義後找到的第一個東西替換它quotes ...「 – SashaZh

+1

@SashaZh如果你真的想去爲它,我建議看看一些printf實現來獲得解析權。 –

+0

這是一個好主意,謝謝! – SashaZh