关于使用c样式文件IO(例如使用FILE *,函数如fgets()等)或c ++样式(例如istreams或ifstreams和函数,如read()或get),存在无数问题( )等)。我一直无法找到比较不同功能的两种方法的主题。
是什么时候比另一个更好我通常用c ++编程,但仍然使用FILE *来表示我的所有IO,而且我使用(f)printf而不是cout等等。我认为这只是习惯。有没有人有明确的理由选择一个而不是另一个?或者当一个或另一个最佳时的情况?
答案 0 :(得分:1)
如果我想格式化某些内容,我发现printf
比cout
更容易使用,写法更紧凑。所以我通常不会打扰cout
。
ifstreams
和ofstreams
并不是那么糟糕。
答案 1 :(得分:0)
在实践中,问题在你达到这三个问题之前就已经解决了
的问题。您需要过滤输出或输出到某些设备
这是不受支持的,因此您将使用某种自定义
streambuf
。而且你会想要输出你自己的类型,而不仅仅是
编译器提供的,所以你将使用很多自定义
operator<<
。当然,您需要集中管理特定的
根据值的逻辑含义格式化:您不想要
说“以固定格式格式化此值,后面有三位数
小数“,但”将此值格式化为利率(或
无论如何“,”格式化利率的规范
在源代码中的单个位置给出(不在每个printf
中)。和
当然,您希望能够改变利率类型
从double
到BigDecimal
,无需梳理所有内容
代码试图修复printf
。 (就此而言,你如何修改
printf
输出BigDecimal
?)
坦率地说,iostream可能更方便(虽然不是
太糟糕了),它通常不如FILE*
那么有效。但既然如此
实际上没有用,这些问题变得无关紧要。