绿小蕤

好逸恶劳,贪生怕死

  • 主页
  • 简介
  • 相册
所有文章 友链 学习履历

绿小蕤

好逸恶劳,贪生怕死

  • 主页
  • 简介
  • 相册

C++学习:C和C++的I/O库区别

2018-10-19 2018-10-19 view 44 times

PS:下面是我个人对两种I/O库的理解

C语言的输入输出:需要标准流和输入输出函数共同实现,这是个过程

C++的输入输出:实例化ios类为对象,这是面向对象

最近看的两个项目,一个是C,一个是C++,突然发现真的有很多不同


C语言—标准I/O

C语言的I/O相关函数封装在头文件 \<stdio.h>


1. 三个标准流

PS:我对流的理解,是数据源源不断的流动,标准应该是指某种规则

  • 标准输入流 stdin:从键盘输入

  • 标准输出流 stdout:默认是输出到屏幕

    stdout 是行缓冲的,输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕

  • 标准错误流 stderr:默认是输出到屏幕

    stderr 是无缓冲的,会直接输出

1
2
3
4
5
int main(){
fprintf(stdout,"Hello");
fprintf(stderr,"World!");
return0;
} // 输出结果:World!Hello


2. 格式化输入、输出

(1)格式化输入

  • scanf:从控制台输入
  • fscanf :从文件输入
  • sscanf :从指定字符串输入

(2)格式化输出

  • printf:向屏幕这样的标准输出设备输出
  • sprintf:格式化输出到一个字符串
  • fprintf:格式化输出到流 stream指定的文件


3. 标准流和格式化输入输出函数的关系

PS:段小洋说不能单独讲流或输入输出,应该就是输入输出流,两者是绑定的,但是我就是想把它分开来,这样好理解嘛 ~

C语言把所有的设备(比如显示器、键鼠、U盘等)都当做文件,把所有的东西都当作文件来处理

程序与文件交互时,会默认创建 stdin、stdout、stderr 三个文件

比如,stdin先接收键盘的数据,然后通过输入函数将数据输入到程序里


C++—标准I/O

https://www.cnblogs.com/xumengpiaoyun/archive/2013/04/21/3034195.html


  • 标准I/O:对系统指定的标准设备的输入和输出(键盘输入数据,输出到显示屏幕)
  • 文件I/O:外存磁盘文件为对象进行输入和输出(从磁盘文件输入数据,数据输出到磁盘文件)
  • 字符串I/O:对内存中指定的空间进行输入和输出


1. I/O类库中的常用流类

img


2.头文件

iostream类库的即可分别由不同的头文件来实现,命名空间为 std

  • iostream:标准I/O,对系统指定的标准设备的输入和输出(比如键盘输入数据,输出到显示屏幕)
  • fstream:文件I/O,以磁盘文件为对象的输入和输出(从磁盘文件输入数据,数据输出到磁盘文件)
  • strstream:字符串I/O,对内存中指定的空间的输入和输出


PS:标准输入输出流、格式化输入输出都是对流类实例化为对象

3. 标准输入流

  • cin流对象:从输入流提取数据,遇到空格或者回车就终止。
  • cin.get()
  • cin.getline()


4. 标准输出流

  • cout 流对象:可以传送到显示器输出,也可以重定向到磁盘文件
  • cerr 流对象:只能在显示器输出,不经过缓冲区
  • clog 流对象:在显示器显示错误信息,缓冲区满 后或者遇 endl 时向显示器输出


5. 格式化输入输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>

using namespace std;

int main()
{
//控制格式化, 输出
std::cout << "default bool values : " << true << " " << false
<< "\nalpha bool values : " << std::boolalpha << true << " " << false
<< std::endl;
std::cout << "no reset bool : " << true << " " << false << std::endl; //没有重置
std::cout << std::noboolalpha << "reset bool : " << true << " " << false << std::endl; //重置

//整数的基, 显示, 大写
std::cout << std::showbase;
std::cout << "default : " << 20 << " " << 1024 << std::endl; //默认
std::cout << "octal : " << oct << 20 << " " << 1024 << std::endl; //8进制
std::cout << std::uppercase << "hex : " << hex << 20 << " " << 1024
<< std::nouppercase <<std::endl; //16进制
std::cout << "decimal : " << dec<< 20 << " " << 1024 << std::endl; //10进制
std::cout << std::noshowbase;
return 0;
}
  • C++

扫一扫,分享到微信

微信分享二维码
C++学习:内存管理
C++学习:内存对齐
  1. 1. C语言—标准I/O
    1. 1.0.1. 1. 三个标准流
    2. 1.0.2. 2. 格式化输入、输出
      1. 1.0.2.1. (1)格式化输入
      2. 1.0.2.2. (2)格式化输出
    3. 1.0.3. 3. 标准流和格式化输入输出函数的关系
  • 2. C++—标准I/O
    1. 2.0.1. 1. I/O类库中的常用流类
    2. 2.0.2. 2.头文件
    3. 2.0.3. 3. 标准输入流
    4. 2.0.4. 4. 标准输出流
    5. 2.0.5. 5. 格式化输入输出
  • © 绿小蕤
    访问量:45295次| 访客数:38796人次
    版权属于绿小蕤
    本喵出生 2592 天 10 小时 00 分
    • 所有文章
    • 友链
    • 学习履历

    tag:

    • Advanced Technology
    • C++
    • cmake
    • Linux
    • 硬件
    • opencv
    • 区块链
    • 深度学习
    • python
    • 机器学习
    • Hexo
    • Git
    • 纪念第一篇文章
    • 计算机网络
    • tensorflow
    • 编译
    • 配置
    • 数据结构
    • caffe
    • cs144
    • cs231n
    • ubuntu
    • hexo
    • 计算机网络、密码学
    • 操作系统
    • 算法
    • 软件
    • 云

      缺失模块。
      1、请确保node版本大于6.2
      2、在博客根目录(注意不是yilia根目录)执行以下命令:
      npm i hexo-generator-json-content --save

      3、在根目录_config.yml里添加配置:

        jsonContent:
          meta: false
          pages: false
          posts:
            title: true
            date: true
            path: true
            text: false
            raw: false
            content: false
            slug: false
            updated: false
            comments: false
            link: false
            permalink: false
            excerpt: false
            categories: false
            tags: true
      

    • vim使用说明

      2019-10-07

      #Linux

    • 区块链

      2019-01-15

      #区块链

    • 密码学

      2019-01-15

      #计算机网络、密码学

    • caffe(九)——配置文件

      2019-01-10

      #caffe

    • caffe(八)——layer

      2019-01-10

      #caffe

    • caffe(七)——blob

      2019-01-10

      #caffe

    • TCP/IP HTTP Soket

      2019-01-08

      #计算机网络

    • 网页生成

      2019-01-07

      #计算机网络

    • yilia主题的相册搭建

      2019-01-07

      #hexo

    • 算法(二)——递归、迭代、回溯

      2019-01-06

      #算法

    • 算法(一)——时间复杂度

      2019-01-06

    • caffe(六)——可视化网络工具Netscope

      2019-01-04

      #caffe

    • caffe(五)——windows下输出log日志和画出accuracy和loss曲线

      2019-01-03

      #caffe

    • caffe(四)——finetune

      2019-01-03

      #caffe

    • caffe(三)——模型和数据集

      2019-01-02

      #caffe

    • 图神经网络

      2019-01-02

      #Advanced Technology#深度学习

    • caffe(二)——训练和测试MNIST

      2018-12-27

      #caffe

    • caffe(一)——windows下环境配置

      2018-12-27

      #caffe

    • Christmas Gift——pygame、pyinstaller

      2018-12-25

    • 机器学习(五)——KNN

      2018-12-25

      #机器学习

    • 机器学习(四)——XGBoost

      2018-12-25

      #机器学习

    • 机器学习(三)——PCA

      2018-12-24

      #机器学习

    • 机器学习(二)——贝叶斯算法

      2018-12-24

      #机器学习

    • 机器学习(一)——决策树、随机森林

      2018-12-24

      #机器学习

    • 编译和链接(四)——重定义

      2018-12-19

      #编译

    • 编译和链接(三)——头文件与库

      2018-12-19

      #编译

    • 编译和链接(二)——静态链接和动态链接

      2018-12-19

      #编译

    • 编译和链接(一)——预处理、编译、链接

      2018-12-19

      #编译

    • Linux(六)——进程调度

      2018-12-17

      #Linux

    • Debug、Release版本下 多线程问题

      2018-11-28

    • Dlib中imglab生成失败的解决方法

      2018-11-19

    • C++学习:多线程

      2018-11-08

      #C++

    • cs144:1-1

      2018-10-29

      #计算机网络#cs144

    • [置顶]目录检索

      2018-10-25

    • [置顶]分享

      2018-10-25

    • win10+VS2013+Dlib 安装配置

      2018-10-22

      #配置

    • C++学习:强制类型转换

      2018-10-21

      #C++

    • C++学习:const、static、extern

      2018-10-20

      #C++

    • C++学习:指针和引用

      2018-10-20

      #C++

    • C++学习:内存管理

      2018-10-19

      #C++

    • C++学习:C和C++的I/O库区别

      2018-10-19

      #C++

    • C++学习:内存对齐

      2018-10-19

      #C++

    • C++学习:类

      2018-10-19

      #C++

    • C++学习:标准库和标准模板库

      2018-10-19

      #C++

    • 操作系统启动过程

      2018-10-18

      #操作系统

    • 处理器

      2018-10-18

      #硬件

    • 远程登陆

      2018-10-17

    • 文本文件和二进制文件

      2018-09-20

    • CUDA和OpenCL

      2018-09-17

      #硬件

    • 2018-09-15

    • Linux(五)—— .o、.a、.so

      2018-09-13

      #Linux

    • CMake(三)—— Linux下使用CMake

      2018-09-13

      #cmake#Linux

    • ubuntu(三)—— opencv、cheese安装

      2018-09-13

      #Linux#ubuntu

    • ubuntu(二)—— sublime的python环境搭建

      2018-09-13

      #Linux#ubuntu

    • ubuntu(一)—— VM虚拟机上安装ubuntu

      2018-09-13

      #Linux#ubuntu

    • Linux(四)—— 文件

      2018-09-10

      #Linux

    • CMake(二)—— Windows下使用CMake

      2018-09-10

      #cmake

    • CMake(一)—— make和cmake

      2018-09-10

      #cmake

    • Linux(三)—— 环境变量

      2018-09-09

      #Linux

    • Linux(二)—— 系统目录结构

      2018-09-09

      #Linux

    • Linux(一)—— 为什么要用Linux做开发

      2018-09-09

      #Linux

    • DLL的创建与使用

      2018-09-04

    • 剑指offer(一)

      2018-08-22

      #C++

    • 编译器、编辑器、IDE

      2018-08-22

      #软件

    • VS+opencv的配置

      2018-08-19

      #编译#配置

    • opencv(六)——图像坐标系和宽高

      2018-08-15

      #opencv

    • opencv(五)——图像读取

      2018-08-15

      #opencv

    • opencv(四)——AdaBoost

      2018-08-14

      #opencv

    • opencv(三)——绘图

      2018-08-14

      #opencv

    • opencv(二)——imgproc

      2018-08-14

      #opencv

    • opencv(一)——HighGUI

      2018-08-14

      #opencv

    • cs231n笔记(十一)——生成式对抗网络

      2018-08-14

      #深度学习#cs231n

    • cs231n笔记(十)——反卷积与特征可视化

      2018-08-14

      #深度学习#cs231n

    • cs231n笔记(九)——分类、检测、分割、跟踪

      2018-08-13

      #深度学习#cs231n

    • 嵌入式与各种板子

      2018-08-05

      #硬件

    • Tensorboard 总结

      2018-08-05

      #python#tensorflow

    • TensorFlow 总结

      2018-08-05

      #python#tensorflow

    • cs231n笔记(八)——CNN经典网络

      2018-08-05

      #深度学习#cs231n

    • cs231n笔记(七)——深度学习框架

      2018-08-03

      #深度学习#cs231n

    • cs231n笔记(六)——循环神经网络

      2018-08-02

      #深度学习#cs231n

    • TensorFlow(四)——RNN实现MNIST的分类

      2018-08-02

      #python#tensorflow

    • NLP——word2vec

      2018-08-01

      #深度学习

    • TensorFlow(三)——两层CNN神经网络实现MNIST的分类

      2018-07-31

      #python#tensorflow

    • Ipython 与 Jupyter Notebook

      2018-07-29

      #python

    • TensorFlow(二)——单层神经网络实现MNIST的分类

      2018-07-26

      #python#tensorflow

    • TensorFlow(一)——两层神经网络预测线性回归

      2018-07-26

      #python#tensorflow

    • cs231n笔记(二)——最优化

      2018-07-26

      #深度学习#cs231n

    • 进程和线程

      2018-07-26

      #硬件

    • cs231n笔记(五)——卷积神经网络

      2018-07-25

      #深度学习#cs231n

    • cs231n笔记(四)——神经网络

      2018-07-18

      #深度学习#cs231n

    • cs231n笔记(三)——分段式反向传播求梯度

      2018-07-16

      #深度学习#cs231n

    • cs231n笔记(一)——线性回归、逻辑回归、多分类

      2018-07-15

      #深度学习#cs231n

    • 2018-07-15

    • 程序是怎样跑起来的

      2018-07-14

      #硬件

    • 解决pip安装慢的问题

      2018-06-28

      #python

    • Deep-Learning-吴恩达-作业(七)

      2018-06-28

      #深度学习#python

    • Deep Learning 吴恩达 课程笔记大纲

      2018-06-27

      #深度学习

    • Deep-Learning-吴恩达-作业(六)

      2018-06-25

      #深度学习#python

    • Deep-Learning-吴恩达-作业(五)

      2018-06-25

      #深度学习#python

    • Deep-Learning-吴恩达-作业——关于plot_decision_boundary()函数的理解

      2018-06-25

      #python#机器学习

    • Deep-Learning-吴恩达-作业(四)

      2018-06-24

      #深度学习#python

    • 深度学习和强化学习

      2018-06-21

      #机器学习

    • Deep-Learning-吴恩达-作业(三)

      2018-06-20

      #深度学习#python

    • Deep Learning 吴恩达 作业(二)

      2018-06-20

      #深度学习#python

    • Deep Learning 吴恩达 作业(一)

      2018-06-15

      #深度学习#python

    • anaconda,conda,pip的关系

      2018-06-13

      #python

    • 正则表达式

      2018-06-11

    • 机器学习算法回顾目录

      2018-06-05

      #机器学习

    • Cygwin 安装

      2018-06-01

      #Linux

    • Git 学习

      2018-06-01

      #Git

    • CryptoKitties

      2018-05-28

      #区块链

    • 2050大会——关于图像处理的收获

      2018-05-28

      #Advanced Technology

    • 虚拟机和云(特别简陋的认识)

      2018-05-18

      #云

    • 啥叫运营商

      2018-05-18

    • XML、YAML、JSON

      2018-05-14

      #数据结构

    • 傅里叶变换和图像处理

      2018-05-14

      #opencv

    • 机器学习算法大总结

      2018-05-11

      #机器学习

    • python入门编程

      2018-05-09

      #python

    • CommandLineParse类

      2018-05-08

      #opencv

    • argc和argv

      2018-05-08

      #C++

    • Hexo主题的优化

      2018-05-08

      #Hexo

    • ImageWatch

      2018-05-07

      #opencv

    • 天池比赛入门

      2018-05-07

      #机器学习

    • 编译器和解释器

      2018-05-04

      #编译

    • GitHub+Hexo 搭建自己的博客

      2018-05-04

      #Hexo

    • Hello GitHub

      2018-05-03

      #Hexo#纪念第一篇文章

    • 师兄的Blog
    JZY

    研究生:东南大学电子学院
    本科:南京理工大学电光学院