我有用C語言編寫的代碼,我正致力於製作一個庫,從中我可以從其他語言訪問函數。在C++應用程序中使用C庫中的標準輸出
我正在爲此代碼編寫一個C++客戶端,以確定需要進行哪些更改才能將我的庫包括到C++應用程序中。
通常,基於C語言的二進制文件會分析某些輸入,然後通過一系列fprintf
語句將其數據輸出到stdout
。
有沒有辦法將發送到stdout
的相關C函數的輸出重定向?我不是C++專家,但我想我要做的是提供一個C++輸出流緩衝區(ostream
和ofstream
?)的子類,它包含相同的輸出,否則這些輸出將由相關的C功能爲stdout
。
我希望將這些數據重定向到文件流或C++應用程序中的標準輸出,如果可能的話。
我該怎麼做?我可以保留我的C代碼原樣並從C++代碼中重定向stdout
嗎?
EDIT
我可以在問題編輯C的功能,從而使一個文件指針或描述符是一個參數。這會有幫助,能夠通過輸出的地方嗎?我不清楚的是如何翻譯C++ IO和CIO。我無法將C++ iostream
傳遞給C函數,或者我可以嗎?
在某些系統(特別是Linux)上,來自C++的'stdout'和來自C++的'std :: cout'是「同步的」。你總是可以在C++代碼中使用''頭來獲得'stdout'的C概念。 –
2012-01-17 12:31:52
因此,如果我設置了'FILE * fp = stdout'並且有一個將數據吐出到'stdout'的C函數'foo(FILE * fp)',那麼我會怎麼做將輸出從'std :: cout'重定向到輸出流是(仍然)'std :: cout'還是文件輸出流? – 2012-01-17 12:38:04
C函數不知道C++'std :: cout'!但請參閱http://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/manual/manual/io_and_c.html – 2012-01-17 12:42:05