2016-04-20 69 views
2

很明顯,將iostream/fstreamstdio和C風格的I/O處理混合並不是一個好習慣。混合fstream和stdio是否存在技術危險?

打印與printf(...)一行和另一個std:cout << ...,或閱讀文件,FILE*後來與ofstream寫作是醜陋的,可以製造混亂,只是自找麻煩。

但是,這種做法是否僅僅基於一種文體/可讀性論證而皺起了眉毛?還是它有更深的技術原因?

我在問這個,因爲我需要在我的代碼的一小部分中使用mmap,做一些低級別的寄存器處理。 mmap適用於c風格的文件描述符。但是,在其他代碼中,我想使用C++流路由來處理文件。

回答

3

技術危險是性能下降,因爲兩種輸出方法不能獨立緩衝。有ios_base::sync_with_stdio(bool)表示不需要這種同步(例如因爲不使用<cstdio>),但默認是緩慢且正確的。