该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

列个提纲:

1.cstdio是面向“文件”的,或者不强调文件和非文件流的区别,默认流就是可以关联外部文件,至于文件的外延是啥就不管,扔给宿主环境了。从std::FILE这个名字以及printf/scanf接口描述基于fprintf/fscanf上就可以看出来。

iostream头只是包含了一坨东西,封装标准输入输出流,和文件流(在)不通用。

2.cstdio不知道iostream,而iostream知道cstdio并且默认同步,此外提供有限的接口摆脱关系(sync_with_stdio)。因为这个接口约束,iostream要脱离cstdio(的实现)是不太可能的。

3.cstdio有orientation的概念;iostream是否wide是直接写死在静态类型的模板参数里的,并且底层的流不只支持char和wchar_t字符类型。

4.iostream底层公开了相对完整的缓冲接口(如std::basic_filebuf),可以自行扩展;cstdio只能笼统地设置缓冲模式和提供提供区的接口,但多了行缓冲的概念(_IOLBF)。

5.iostream和std::locale交互。C标准库的(对应C++的)提供locale-specific behavior,和cstdio不直接关联。两者不是一回事。

因为这个原因,iostream能直接编解码字符串,而cstdio不能处理和wide-oriented无关的编码,需要(对应C++的)或C11的的例程显式调用。

6.iostream体系提供了基于字符串提供了“内存流”(主要是std::stringstream),而cstdio这部分一般只是内部实现,如果需要得自己造。

7.iostream底层通过继承和重写protected虚函数提供实现。cstdio这部分是内部实现,不提供与之对应的扩展功能。

8.两者都实现了流的状态,但不尽相同。iostream显式区分bad和fail,但cstdio没有。

9.iostream提供特定的打开模式的组合,而cstdio使用字符串参数。前者无法直接扩展;后者解析较低效,虽然不需要修改类型就可扩展但也存在实现的运行时兼容性问题。

10.除了检查流的状态,iostream处理错误可选使用异常。cstdio处理错误依赖返回值和流状态。

11.iostream的格式输入输出基于重载,静态分派且类型安全,可以实现得更高效;cstdio的格式输入输出使用的是领域特定语言,需要运行时解析,通常比较低效,且实现的运行时兼容问题修复较困难。

但后者同时提供运行时配置可修改的格式的功能,而前者没有。

c语言cstdio什么意思,iostream与cstdio有什么区别?相关推荐

  1. C++输入输出:iostream还是cstdio?

    本来博客的题目是 <iostream>还是<cstdio>?结果回头一看题目变成了 还是? 气死了(╯#-_-)╯(难道<>里面的被当做注释了吗) 经常说<c ...

  2. c语言深入浅出(一)strcpy和memcpy的区别

    c语言深入浅出(一)strcpy和memcpy的区别 strcpy和memcpy都是c语言的库函数 strcpy:只用于字符串的复制,当碰到'\0'就停止了 memcpy:用于这个内存的拷贝,适用于结 ...

  3. c语言 python java_C语言、C++、Java,Python之间的区别,哪个更有前景,哪个更难 ?...

    从这四种语言的难度.受欢迎度还有作用以及优点缺点给楼主做一个全面的分析,我们可以从中了解其区别,以及难易程度.至于今后可以用到的或者是前景问题,根据自己的职业发展大家可以自己做个分析.最后会总结一下他 ...

  4. 大根堆与小根堆的理解,如何手写一个堆,以及什么时候用自己手写的堆,什么时候用语言提供堆的api,(二者的区别)

    大根堆与小根堆的理解,如何手写一个堆,以及什么时候用自己手写的堆,什么时候用语言提供堆的api,(二者的区别) 定义 Heap是一种数据结构具有以下的特点: 1)完全二叉树: 2)heap中存储的值是 ...

  5. java构造方法特点_java语言构造方法的特点是什么?和成员方法区别在哪?

    在科学技术水平发展日新月异的今时今日,大家对于新技术的渴求越来越强烈,也开始主动的学习更多的新知识以更好的适应时代的发展.今天就来为大家介绍一下java语言构造方法的特点是什么以及和成员方法区别在哪? ...

  6. c语言cstdio头文件,头文件cstdio和stdio.h的区别?

    满意答案 tomvalex 推荐于 2017.11.23 采纳率:56%    等级:8 已帮助:112人 在C语言中,stdio.h 头文件是主要的. 而在后来的C++语言中,C只是C++的一个子集 ...

  7. PHP 语言结构(Language constructs)和函数的区别

    2019独角兽企业重金招聘Python工程师标准>>> 相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等. 例子 ...

  8. C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解

    前言 大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets().他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输 ...

  9. c语言 sizeof length,size()、length ()和sizeof()的区别

    1.size()是取字符串长度的,跟length()用法相同. 例如:string str="0123456789"; cout < cout < 为了兼容,这两个函数 ...

最新文章

  1. Scrapy框架CrawlSpider类爬虫实例
  2. SAP RETAIL 通过分配表创建UB STO单据
  3. 使用Consul做服务发现的若干姿势
  4. 随堂小测app冲刺(三)
  5. 运用递归将两个链表进行连接
  6. YOLOv3目标检测有了TensorFlow实现,可用自己的数据来训练
  7. CSS的@media与@media screen,媒体查询
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的高考志愿填报管理系统
  9. DeFi货币市场协议DMM宣布因监管部门的要求,已停止运营
  10. 2021“数维杯”国际大学生数学建模竞赛B题思路
  11. 详解 ManualResetEvent(转)
  12. 【科普向】5G核心网架构和关键技术
  13. 索博士面膜app开发
  14. java 日期转大写,java步骤转换大写日期及人民币大写转换方式 .txt
  15. VMware虚拟机在Windows10下不兼容解决办法
  16. arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)
  17. php大商创 安装,新零售电商系统:大商创X安装教程【宝塔环境】
  18. 与化学相关的计算机应用情况,计算机化学的发展、应用与展望
  19. Simulink仿真入门到精通(五) Simulink模型的仿真
  20. 自学计算机编程应该看些什么书

热门文章

  1. 截止8月31日,2012年跑步总量满1000公里
  2. SAP HANA学习
  3. [附源码]java+ssm计算机毕业设计基于销售统计的超市货架管理系统a1tdk(源码+程序+数据库+部署)
  4. 算法导论习题—主方法求渐进紧确界、递归树方法
  5. CAN发送和接收数据
  6. linux 下 c++ 标准库的安装
  7. http 404 not found
  8. Django 处理用户浏览记录
  9. linux中screen的使用
  10. js全局替换回车换行符