C++ 基本的输入输出

2023-11-10

C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。

C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作

I/O 库头文件

下列的头文件在 C++ 编程中很重要。

头文件 函数和描述
<iostream> 该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
<iomanip> 该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。
<fstream> 该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。

标准输出流(cout)

预定义的对象 cout 是 iostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的,如下所示:

实例

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of str is : Hello C++

C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。

流插入运算符 << 在一个语句中可以多次使用,如上面实例中所示,endl 用于在行末添加一个换行符。

标准输入流(cin)

预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的,如下所示:

实例

#include <iostream>
 
using namespace std;
 
int main( )
{
   char name[50];
 
   cout << "请输入您的名称: ";
   cin >> name;
   cout << "您的名称是: " << name << endl;
 
}

当上面的代码被编译和执行时,它会提示用户输入名称。当用户输入一个值,并按回车键,就会看到下列结果:

请输入您的名称: cplusplus
您的名称是: cplusplus

C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。

流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:

cin >> name >> age;

这相当于下面两个语句:

cin >> name;
cin >> age;

标准错误流(cerr)

预定义的对象 cerr 是 iostream 类的一个实例。cerr 对象附属到标准错误设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。

cerr 也是与流插入运算符 << 结合使用的,如下所示:

实例

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

当上面的代码被编译和执行时,它会产生下列结果:

Error message : Unable to read....

标准日志流(clog)

预定义的对象 clog 是 iostream 类的一个实例。clog 对象附属到标准错误设备,通常也是显示屏,但是 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲在,直到缓冲填满或者缓冲区刷新时才会输出。

clog 也是与流插入运算符 << 结合使用的,如下所示:

实例

#include <iostream>
 
using namespace std;
 
int main( )
{
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

当上面的代码被编译和执行时,它会产生下列结果:

Error message : Unable to read....

通过这些小实例,我们无法区分 cout、cerr 和 clog 的差异,但在编写和执行大型程序时,它们之间的差异就变得非常明显。所以良好的编程实践告诉我们,使用 cerr 流来显示错误消息,而其他的日志消息则使用 clog 流来输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 基本的输入输出 的相关文章

  • C++ 字符串

    C 提供了以下两种类型的字符串表示形式 C 风格字符串 C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言 并在 C 中继续得到支持 字符串实际上是使用 null 字符 0 终止的一维字符数组 因此 一个以
  • C++ 动态内存

    了解动态内存在 C 中是如何工作的是成为一名合格的 C 程序员必不可少的 C 程序中的内存分为两个部分 栈 在函数内部声明的所有变量都将占用栈内存 堆 这是程序中未使用的内存 在程序运行时可用于动态分配内存 很多时候 您无法提前预知需要多少
  • C++类结构规范定义

    后期私有类肯定还会有很多 为了自己和读者方便阅读 在后面的设计中将严格按照制定格式来定义类的变量和函数 pragma once class CClassxxx public CClassBase DECLARE DYNAMIC CClass
  • C++ 常量

    常量是固定值 在程序执行期间不会改变 这些固定的值 又叫做字面量 常量可以是任何的基本数据类型 可分为整型数字 浮点数字 字符 字符串和布尔值 常量就像是常规的变量 只不过常量的值在定义后不能进行修改 整数常量 整数常量可以是十进制 八进制
  • C++ 数组

    C 支持数组数据结构 它可以存储一个固定大小的相同类型元素的顺序集合 数组是用来存储一系列数据 但它往往被认为是一系列相同类型的变量 数组的声明并不是声明一个个单独的变量 比如 number0 number1 number99 而是声明一个
  • VC++ 控制台程序常用接口

    1 申请一个控制台窗口 如果程序本身是控制台程序 可以不用调用 AllocConsole 2 获取控制台屏幕缓冲区的句柄 HANDLE m hConsole GetStdHandle STD OUTPUT HANDLE 3 设置控制台标题
  • GPAC MP4文件写入(支持H264、H265)

    1 GPAC模块下载链接https github com gpac gpac或https gpac wp imt fr downloads 2 编译指导https github com gpac gpac wiki Build Introd
  • C++类上使用属性(__declspec property)

    原始代码如下 class A private int m nIndex public int getIndex return m nIndex void setIndex int value m nIndex value 如果采用属性方式实
  • C++ 模板

    模板是泛型编程的基础 泛型编程即以一种独立于任何特定类型的方式编写代码 模板是创建泛型类或函数的蓝图或公式 库容器 比如迭代器和算法 都是泛型编程的例子 它们都使用了模板的概念 每个容器都有一个单一的定义 比如 向量 我们可以定义许多不同类
  • C++ 标准库中数据类型转换

    头文件引用
  • VC++ 设定Windows程序自启动(非管理员权限)

    Windows程序自启动方式有很多种 任务计划 注册表 启动项等等 创建任务计划和启动项 都需要程序具有管理员权限才能写入 在此略过 只介绍启动项方式 要实现启动项方式 必须要知道当前用户下启动项方式的目录 我们才好将程序或程序的快捷方式存
  • C++ Web 编程

    什么是 CGI 公共网关接口 CGI 是一套标准 定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的 CGI 规范目前是由 NCSA 维护的 NCSA 定义 CGI 如下 公共网关接口 CGI 是一种用于外部网关程序与信息服务器
  • C++ 日期 & 时间

    C 标准库没有提供所谓的日期类型 C 继承了 C 语言用于日期和时间操作的结构和函数 为了使用日期和时间相关的函数和结构 需要在 C 程序中引用
  • C++ 多态

    多态按字面的意思就是多种形态 当类之间存在层次结构 并且类之间是通过继承关联时 就会用到多态 C 多态意味着调用成员函数时 会根据调用函数的对象的类型来执行不同的函数 下面的实例中 基类 Shape 被派生为两个类 如下所示 实例 incl
  • C++ 基本的输入输出

    C 标准库提供了一组丰富的输入 输出功能 我们将在后续的章节进行介绍 本章将讨论 C 编程中最基本和最常见的 I O 操作 C 的 I O 发生在流中 流是字节序列 如果字节流是从设备 如键盘 磁盘驱动器 网络连接等 流向内存 这叫做输入操
  • C++ 函数

    函数是一组一起执行一个任务的语句 每个 C 程序都至少有一个函数 即主函数 main 所有简单的程序都可以定义其他额外的函数 您可以把代码划分到不同的函数中 如何划分代码到不同的函数中是由您来决定的 但在逻辑上 划分通常是根据每个函数执行一
  • C/C++ 打印菱形图案

    设计思路 以n行菱形为例 n为奇数 图形分为上下2部分 左上角坐标为 0 0 顶点坐标为 0 n 2 图形上半部分 0 n 2 从第1行到第n 2行 每行菱形数递增1个单位 同时每行菱形的起始坐标递减1个单位 图形下半部分 n 2 1 n
  • C++ 标准库

    C 标准库可以分为两部分 标准函数库 这个库是由通用的 独立的 不属于任何类的函数组成的 函数库继承自 C 语言 面向对象类库 这个库是类及其相关函数的集合 C 标准库包含了所有的 C 标准库 为了支持类型安全 做了一定的添加和修改 标准函
  • C++ 继承

    面向对象程序设计中最重要的一个概念是继承 继承允许我们依据另一个类来定义一个类 这使得创建和维护一个应用程序变得更容易 这样做 也达到了重用代码功能和提高执行效率的效果 当创建一个类时 您不需要重新编写新的数据成员和成员函数 只需指定新建的
  • C/C++ 课题解答(1)

    随机产生100个字符 a z 数组arrayOfChar 输入字符c 计算字符c在数组中出现的次数和位置 include

随机推荐

  • SpringBoot怎么实现web端上传超大文件

    上周遇到这样一个问题 客户上传高清视频 1G以上 的时候上传失败 一开始以为是session过期或者文件大小受系统限制 导致的错误 查看了系统的配置文件没有看到文件大小限制 web xml中seesiontimeout是30 我把它改成了1
  • PCL RANSAC分割多个平面(方法二)

    目录 一 概述 二 代码实现 三 结果展示 一 概述 之前的文章中已经写过RANSAC拟合分割多个平面的方法 在进行结果保存的时候是通过stringstream实现的 在C 11普及的大环境下 这种方法略显复杂 本文对其进行改进 二 代码实
  • javaWeb

    Ajax 序列化表单元素 serialize 把选择器选中的元素的name和value序列化为字符串 注意 以下情况不会被序列化 1 表单元素被禁用 2 表单元素没有name属性 3 表单元素没有选中 仅限单选按钮和复选框 4 file元素
  • WebStorm2023新版设置多个窗口,支持同时显示多个项目工程

    调整设置 Appearance Behavior gt System Settings gt Project open project in New window
  • type='file' 标签选取文件/文件夹

    一般网页上传文件大家都会用到这个标签
  • tcp port numbers reused出现原因_从TCP协议的原理来谈谈rst复位攻击

    在谈RST攻击前 必须先了解TCP 如何通过三次握手建立TCP连接 四次握手怎样把全双工的连接关闭掉 滑动窗口是怎么传输数据的 TCP的flag标志位里RST在哪些情况下出现 下面我会画一些尽量简化的图来表达清楚上述几点 之后再了解下RST
  • element-ui样式篇:修改样式不影响全局,不影响其他组件

    element ui每个控件都自带了样式 使用时候很多时候需要修改样式 但是大多数遇到的情况是修改的样式要么不起作用 要么修改了默认样式 导致其他组件用到的地方样式都改了 如何修改样式起作用且不影响其他组件 一 如何找到element样式类
  • iwebsec靶场 SQL注入漏洞通关笔记5- updatexml注入(报错型盲注)

    系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1 数字型注入 mooyuan的博客 CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2 字符型注入 宽字节注入 mooyuan的博客 CSDN博客 iwebsec靶场 SQL
  • 数据结构与算法(二)(Python版)

    数据结构与算法 一 Python版 文章目录 递归动规 初识递归 数列求和 递归三定律 递归的应用 任意进制转换 递归的应用 斐波那契数列 递归调用的实现 分治策略与递归 优化问题和贪心策略 找零兑换问题 贪心算法和动态规划的区别 贪心策略
  • kotlin 协程

    协程 也叫微线程或者轻量级线程 协程和线程的关系 类似于 线程和进程的关系 一个进程可以创建多个线程 一个线程可以创建多个协程 协程也可以嵌套协程 特征 协程是运行在单线程中的并发程序 串行执行 协程简单理解 协程可以类比 Runnable
  • Mybaits面试题整理

    1 MyBatis是什么 MyBatis 是一款优秀的持久层框架 一个半 ORM 对象关系映射 框架 它支持定制化 SQL 存储过程以及高级映射 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis
  • HTML表格里分割线是否显示的问题

    使用HTML制作表格 关于表格中间的分割线显示与否的问题 不显示分割线示例 此时的代码为 这样的情况下 对于背景颜色的属性设定是加在了table标签后面的bgcolor red 此时 表格没有显示分割线 显示分割线示例 这样的情况下 对于背
  • OpenWrt 安装pip这种情况咋办!

    root OpenWrt tmp python get pip py DEPRECATION Python 2 7 will reach the end of its life on January 1st 2020 Please upgr
  • 单片机学习——存储器详解(程序存储器、片内RAM、拓展RAM、EEPROM)

    单片机必学系列 单片机学习 中断系统 单片机学习 存储器详解 程序存储器 片内RAM 拓展RAM EEPROM 单片机学习 定时器 计数器 单片机学习 A D转换 更新ing 单片机学习 存储器详解 程序存储器 片内RAM 拓展RAM EE
  • NAT类型理解

    参考 Web前端的WebRTC攻略 NAT穿越与ICE 掘金 NAT的四种类型 eydwyz的专栏 CSDN博客 nat类型 假定 内网clientA 192 168 0 100 800 与routeB 10 201 16 18 1000
  • 机器学习西瓜书吃瓜笔记之(二)决策树分类 附一键生成决策树&可视化python代码实现

    决策树分类 附一键生成可视化python代码实现 决策树 决策树是用于分类任务的树结构 它的叶子结点为类别 其余节点为判断操作 决策树类似于日常中判断分类的方法 对某个样本进行分类时 从根节点开始 得到所处节点的判断结果 移动到满足结果的子
  • keil调试stm32无法退出debug

    keil调试stm32 debug之后有时会遇到这种情况 导致无法退出debug 只能任务管理器强制结束任务 原因 keil对中文的支持不够友好 工程路径过深或路径中有中文 调试过程中打了断电 解决方式 把工程的路径改浅 改成英文路径 例如
  • VS2015出现“在当前源文件目录或生成系统文件目录中未找到xxx.h”完美解决

    用VS打开一个项目 在编译的时候会出现 corecrt h Nosuchfileordirectory 这样一个问题 其实这就是找不到对应的头文件 这个是VS自带的 说白了就是路径的问题 后来 我在vc 包含目录和库目录添加了对应的头文件和
  • git提交新项目到github上

    博客引用处 以下内容在原有博客基础上进行补充或更改 谢谢这些大牛的博客指导 如何将idea本地已有的新项目完整提交到gitlab上 利用git提交代码 1 Idea的方式 使用idea开发工具新建了一个项目工程 此时该项目工程是没有任何的版
  • C++ 基本的输入输出

    C 标准库提供了一组丰富的输入 输出功能 我们将在后续的章节进行介绍 本章将讨论 C 编程中最基本和最常见的 I O 操作 C 的 I O 发生在流中 流是字节序列 如果字节流是从设备 如键盘 磁盘驱动器 网络连接等 流向内存 这叫做输入操