c语言cstdio什么意思,iostream与cstdio有什么区别?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
列个提纲:
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有什么区别?相关推荐
- C++输入输出:iostream还是cstdio?
本来博客的题目是 <iostream>还是<cstdio>?结果回头一看题目变成了 还是? 气死了(╯#-_-)╯(难道<>里面的被当做注释了吗) 经常说<c ...
- c语言深入浅出(一)strcpy和memcpy的区别
c语言深入浅出(一)strcpy和memcpy的区别 strcpy和memcpy都是c语言的库函数 strcpy:只用于字符串的复制,当碰到'\0'就停止了 memcpy:用于这个内存的拷贝,适用于结 ...
- c语言 python java_C语言、C++、Java,Python之间的区别,哪个更有前景,哪个更难 ?...
从这四种语言的难度.受欢迎度还有作用以及优点缺点给楼主做一个全面的分析,我们可以从中了解其区别,以及难易程度.至于今后可以用到的或者是前景问题,根据自己的职业发展大家可以自己做个分析.最后会总结一下他 ...
- 大根堆与小根堆的理解,如何手写一个堆,以及什么时候用自己手写的堆,什么时候用语言提供堆的api,(二者的区别)
大根堆与小根堆的理解,如何手写一个堆,以及什么时候用自己手写的堆,什么时候用语言提供堆的api,(二者的区别) 定义 Heap是一种数据结构具有以下的特点: 1)完全二叉树: 2)heap中存储的值是 ...
- java构造方法特点_java语言构造方法的特点是什么?和成员方法区别在哪?
在科学技术水平发展日新月异的今时今日,大家对于新技术的渴求越来越强烈,也开始主动的学习更多的新知识以更好的适应时代的发展.今天就来为大家介绍一下java语言构造方法的特点是什么以及和成员方法区别在哪? ...
- c语言cstdio头文件,头文件cstdio和stdio.h的区别?
满意答案 tomvalex 推荐于 2017.11.23 采纳率:56% 等级:8 已帮助:112人 在C语言中,stdio.h 头文件是主要的. 而在后来的C++语言中,C只是C++的一个子集 ...
- PHP 语言结构(Language constructs)和函数的区别
2019独角兽企业重金招聘Python工程师标准>>> 相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等. 例子 ...
- C语言scanf fgets,C语言中输入函数(scanf()、fgets()和gets())的区别详解
前言 大家都知道在C语言中,有三种主要的输入函数:scanf(),fgets()以及gets().他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输 ...
- c语言 sizeof length,size()、length ()和sizeof()的区别
1.size()是取字符串长度的,跟length()用法相同. 例如:string str="0123456789"; cout < cout < 为了兼容,这两个函数 ...
最新文章
- Scrapy框架CrawlSpider类爬虫实例
- SAP RETAIL 通过分配表创建UB STO单据
- 使用Consul做服务发现的若干姿势
- 随堂小测app冲刺(三)
- 运用递归将两个链表进行连接
- YOLOv3目标检测有了TensorFlow实现,可用自己的数据来训练
- CSS的@media与@media screen,媒体查询
- 基于JAVA+SpringMVC+Mybatis+MYSQL的高考志愿填报管理系统
- DeFi货币市场协议DMM宣布因监管部门的要求,已停止运营
- 2021“数维杯”国际大学生数学建模竞赛B题思路
- 详解 ManualResetEvent(转)
- 【科普向】5G核心网架构和关键技术
- 索博士面膜app开发
- java 日期转大写,java步骤转换大写日期及人民币大写转换方式 .txt
- VMware虚拟机在Windows10下不兼容解决办法
- arduino超声波测距接线图详细_Arduino系列之超声波测距模块代码(一)
- php大商创 安装,新零售电商系统:大商创X安装教程【宝塔环境】
- 与化学相关的计算机应用情况,计算机化学的发展、应用与展望
- Simulink仿真入门到精通(五) Simulink模型的仿真
- 自学计算机编程应该看些什么书