2
函數fprintf
寫入FILE*
。我有一個debugPrint函數寫入到stringstream。我不想改變我的功能,因爲它在很多地方使用,它會破壞代碼。使fprintf寫入std :: stringstream
如何將一個stringstream傳遞給fprintf?
更新:我是否可以將stringstream
換成FILE
並解開回來?
函數fprintf
寫入FILE*
。我有一個debugPrint函數寫入到stringstream。我不想改變我的功能,因爲它在很多地方使用,它會破壞代碼。使fprintf寫入std :: stringstream
如何將一個stringstream傳遞給fprintf?
更新:我是否可以將stringstream
換成FILE
並解開回來?
您不能將ostream「傳遞」到fprintf。 FILE
結構依賴於平臺。
這可能不是最好的辦法,但卻可以創造一個邪惡的宏:
#undef fprintf
#define fprintf my_fprintf
而且你可以創建兩個my_fprintfs,一種採用FILE*
,另一個需要std::stringstream&
作爲參數。
您可以通過直接調用my_fprintf來避免宏,但必須修改調用站點。
你不能「輕易地在文件*中包裝stringstream」,但是有一些系統特定的方法。如果這就是你之後的話,那麼Linux例如有fopencookie(),它使用函數指針來讀/寫函數。然後你可以創建包裝std :: stringstream的函數。
在這個答案的結尾http://stackoverflow.com/a/19749019/225186我寫了關於'istringstream'的情況,我猜可以做類似的'ostringstream' – alfC