混合流和标准是否存在技术危险

Are there technical dangers in mixing fstream and stdio?

本文关键字:存在 技术 危险 是否 标准 混合      更新时间:2023-10-16

很明显,将iostream/fstreamstdio和C风格的I/O处理混合在一起不是一个好的做法。

printf(...)打印一行,用std:cout << ...打印另一行,或者用FILE*读取文件,然后用ofstream书写是丑陋的,会造成混乱,只是在自找麻烦。

然而,这种做法不受欢迎的唯一原因基本上只是一种风格/可读性论点,还是有更深层次的技术原因?

我问这个是因为我需要在代码的一小部分中使用 mmap,执行一些低级寄存器处理。 mmap适用于 C 样式的文件描述符。但是,在其余代码中,我想使用C++流路由来处理文件。

技术危险是性能下降,因为两种输出方法无法独立缓冲。ios_base::sync_with_stdio(bool)指示不需要此类同步(例如,因为未使用<cstdio>),但默认值缓慢且正确。