输入输出(2)——C++的标准输出流
目录
一、C++的标准输出流
(一)cout、cerr和clog流对象
1、cout 流对象
2、cerr 流对象
3、clog流对象
(二)用函数put输出字符
(三)用函数 write 输出字符
一、C++的标准输出流
标准输出流——流向标准输出设备(显示器)的数据。
ostream类定义了3个输出流对象,即cout、cerr 和 clog。
(一)cout、cerr和clog流对象
1、cout 流对象
cout 必须和运算符“<<”一起使用。用cout 进行输出的一般形式为:
cout<<输出项1<<输出项2<<…;
它的功能是将输出项1、输出项2…插入到输出流cout中,然后由C++系统将cout中的内容输出到显示器上。
#include<iostream>
using namespace std;
int main()
{cout << 1 << 'a' << "abcd" << 1.2 << endl;return 0;
}
在C++的头文件 iostream.h中,定义了一个代表回车换行的控制符“endl”,其作用与“\n”相同。如下列3条输出语句是等价的:
#include<iostream>
using namespace std;
int main()
{cout << "C++ Program\n";cout << "C++ Proqram" << " \n";cout << "C++ Program" << endl;return 0;
}
cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个“endl”时,不论缓冲区是否已满,都立即输出流中的所有数据,然后插入一个换行符,并刷新流(清空缓冲区)。
需要注意的是:
① 系统已经对“<<”运算符作了重载函数,因此用“cout<<”输出基本类型的数据时,可以不必考虑数据是什么类型。
② 在 iostream.h头文件中只对“<<”和“>>”运算符用于标准类型数据的输入输出进行了重载,但未对用户自定义类型数据的输入输出进行重载。
③ 在用cout进行输出时,每输出一项都要用一个“<<”运算符。例如:输出语句:
cout<<"a= "<< a<< " ,"<< "b="<<b<<endl;
不能写成:
cout<<"a=",a,",","b=",b<<endl;
2、cerr 流对象
cerr流对象是标准出错流,它的作用是向输出设备输出出错信息。
cerr与标准输出流cout的作用和用法类似。
但不同的是
cout流通常是传送到显示器输出、但也可以被重定向输出到磁盘文件;
cerr 流中的信息只能在显示器输出.
当调试程序时,如果不希望程序运行时的出错信息被送到其他文件,这时应该用cerr。
检测输人的一个数是否是正数,如果是,就输出;如果不是,输出错误信息.
#include<iostream>
using namespace std;int main() {float a; cout << "please enter the value of a:"; cin >> a; if (a == 0)//将有关出错信息插人cerr流,在屏幕输出cerr << a << " is equal to zero, error!" << endl; else if (a < 0)cerr << a << " is not a proper data. error!" << endl;elsecout << "a=" << a << endl;return 0;
}
输入:1
please enter the value of a:1
a=1
输入:0
please enter the value of a:0
0 is equal to zero, error!
输入:-1
please enter the value of a:-1
-1 is not a proper data. error!
3、clog流对象
clog流对象也是标准出错流,其作用和cerr相同,都是终端显示器上显示出错信息。只不过cerr是不经过缓冲区,直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇endl时才向显示器输出。
(二)用函数put输出字符
ostream类的成员函数put提供了一种将单个字符送进输出流的方法,其使用方法如下:
#include<iostream>
using namespace std;
int main()
{char a = 'm';cout.put(a);//会输出显示字符mcout.put('m');//会输出和上一句相同的结果return 0;
}
另外,调用put函数的实参还可以是字符的ASCII码或者一个整型表达式,如
cout.put(65 + 32);//显示字符a,因为97是字符a的ASCII号
可以在一个语句中连续调用put函数,如:
cout.put(71).put(79).put(79).put(68).put('\n');//在屏幕上显示G00D
还可以用putchar函数输出一个字符。putchar函数是C语言中使用的,在stdio.h头文件中定义。C++保留了这个函数,在iostream.h头文件中定义。
(三)用函数 write 输出字符
ostream类的成员函数write是一种将字符串送到输出流的方法,该函数在iostream类体中的原型声明语句如下:
ostream& write(const char* pch, int nCount);
ostream& write(const unsigned char* puch, int nCount);
ostream& write(const signed char* psch,int nCount);
其中,第1个参数是待输出的字符串,第2个参数是输出字符串的字符个数。
如输出器串常量“C++ program”,可以这样实现:
cout.write("C++program",strlen("C++program"));
#include<iostream>
#include<string>
using namespace std;
void writestring(char* str)
{cout.write(str, strlen(str)).put('\n');cout.write(str, 6) << "\n";
}
int main()
{char es[]="C++program";cout << "yhe string is: " << es << endl;writestring(es); return 0;
}
运行程序结果:
yhe string is: C++program
C++program
C++pro
该程序中使用write 函数显示字符,不但可以显示整个字符串的内容,也可以显示部分字符串的内容。
相关文章:
输入输出(2)——C++的标准输出流
目录 一、C的标准输出流 (一)cout、cerr和clog流对象 1、cout 流对象 2、cerr 流对象 3、clog流对象 (二)用函数put输出字符 (三)用函数 write 输出字符 一、C的标准输出流 标准输出流——流向标准输…...

C语言序列化和反序列化--TPL(一)
TPL TPL说明网站 C语言中高效的序列化 您可以使用tpl快速轻松地存储和重新加载C数据。Tpl是一个用于序列化C数据的库。数据以自然二进制形式存储。该API很小,并试图保持“不碍事”。Tpl可以序列化许多C数据类型,包括结构。Tpl与文件、内存缓冲区和文件…...
Session + JWT + Cookie
00:HTTP无状态(为了保持状态,前端好麻烦,又要自己存,又要想办法带出去,于是使用cookie) 01:Cookie 将用户信息,在每次请求时候 带给后端(但是自己存储大小有…...

PaddleOCR2.7+Qt5
章节一:Windows 下的 PIP 安装 官网安装教程地址 按照里面的教程去安装 如果使用cuda版本的还要安装tensorrt,不然后面运行demo程序的程序会报如下错。 下载TensorRT 8版本,tensorrt下载地址 章节二:编译源码 进入官网源码地址 下…...

在Android中解析XML文件并在RecyclerView中显示
1. 引言 最近工作有解析外部xml文件在App中显示的需求,特来写篇文章记录一下,方便下次使用。 2. 准备工作 首先,在项目的AndroidManifest.xml文件中添加读取外部存储的权限声明。 <uses-permission android:name"android.permiss…...

Notes for video: EDC-Con 2022/01 - EDC Conceptual Overview and Architecture
Eclipse Dataspace Connector 中文概念 Eclipse Dataspace Connector (EDC) 是一个开源项目,旨在提供一种标准化的方法来连接和共享数据空间中的数据。它是 Eclipse Foundation 下的一个项目,目标是促进数据共享和数据交换的互操作性。以下是 EDC 的一些…...
windows下nginx配置https证书
1、制作证书 1.1 安装工具openSSL。下载地址:http://slproweb.com/products/Win32OpenSSL.html Win64OpenSSL_Light-3_1_0.exe安装(假定安装位置在 d:\openSSL\) 1.2 配置openSSL环境。 新建系统变量OpenSSL值为d:\openSSL\bin,相…...

Llama改进之——RoPE旋转位置编码
引言 旋转位置编码(Rotary Position Embedding, RoPE)将绝对相对位置依赖纳入自注意力机制中,以增强Transformer架构的性能。目前很火的大模型LLaMA、QWen等都应用了旋转位置编码。 之前在[论文笔记]ROFORMER中对旋转位置编码的原始论文进行了解析,重点…...

Python的解析网页
课前案例 通过requests模块爬取指定网站中的图片并保存到本地目录中。 上述案例采用的是同步方式下载图片,效率太低。异步方式如下(线程): # target为目标函数;args中传入的是download函数的参数url threading.Threa…...

VBA技术资料MF159:实现某个区域内的数据滚动
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...

开源DMS文档管理系统 Nuxeo Vs Alfresco对比及 API 使用概述
1. 文档管理系统是什么 文档管理系统(DMS:Document Management System)是一种软件系统,用于组织、存储、检索和管理电子文档和文件。这些文件可以是各种格式的电子文档,如文本文档、电子表格、图像、音频或视频文件等…...
lambda函数实践
文章目录 1.简单实例2.lambda函数使用3.捕获列表的使用4.lambda表达式的应用1.简单实例 2.lambda函数使用 3.捕获列表的使用 4.lambda表达式的应用 #include <iostream> #include <vector>using namespace std;/** 1.简单实例* 2.lambda函数使用* 3.捕获列表的…...

[leetcode hot 150]第一百九十一题,位1的个数
题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中设置位的个数(也被称为汉明重量)。 这道题比较简单,直接对最后一位进行与1的与操作,然…...

gitea的git库备份与恢复
文章目录 gitea库的备份与恢复概述笔记实验环境更新git for windows更新 TortoiseGit备份已经存在的gitea的git库目录使用gitea本身来备份所有git库目录将gitea库恢复到新目录m1m2m3启动gitea - 此时已经恢复完成FETCH_HEAD 中有硬写位置再查一下app.ini, 是否改漏了。m1m2 总结…...
【强化学习05】从Q学习到深度Q学习
深度Q学习(Deep Q-Learning, DQN)是将深度学习与Q学习结合起来的一种强化学习方法,利用神经网络来近似Q值函数,解决传统Q学习在大规模或连续状态空间中的局限性。下面详细解释DQN的机理。 背景知识 Q学习 Q学习是一种值函数法&…...

FPGA实现多路并行dds
目录 基本原理 verilog代码 仿真结果 基本原理 多路并行dds,传统DDS的局限性在于输出频率有限。根据奈奎斯特采样定理,单路DDS的输出频率应小于系统时钟频率的一半。但是在很多地方,要使采样率保持一致,所以,为了…...

ArcgisPro3.1.5安装手册
ArcgisPro3.1.5安装手册 一、目录介绍: 二、安装教程: (1)安装顺序:最先安装运行环境(runtime6.0.5),接着安装install里面的文件,最后复制path里面的文件替换到软件bin文件夹下即可。 (2)具体安装步骤ÿ…...
三大主流框架
Web前端开发领域中,三大主流框架通常指的是: React:由Facebook开发的一个用于构建用户界面的JavaScript库。React以其组件化、声明式编程和虚拟DOM等特点而广受欢迎,能够高效地更新和渲染大型应用。 Vue.js:由尤雨溪创…...

【C++】:vector容器的底层模拟实现迭代器失效隐藏的浅拷贝
目录 💡前言一,构造函数1 . 强制编译器生成默认构造2 . 拷贝构造3. 用迭代器区间初始化4. 用n个val值构造5. initializer_list 的构造 二,析构函数三,关于迭代器四,有关数据个数与容量五,交换函数swap六&am…...

必看项目|多维度揭示心力衰竭患者生存关键因素(生存分析、统计检验、随机森林)
1.项目背景 心力衰竭是一种严重的公共卫生问题,影响着全球数百万人的生活质量和寿命,心力衰竭的病因复杂多样,既有个体生理因素的影响,也受到环境和社会因素的制约,个体的生活方式、饮食结构和医疗状况在很大程度上决定了其心力衰竭的风险。在现代社会,随着生活水平的提…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...

沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...