当前位置: 首页 > news >正文

输入输出(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的标准输出流 &#xff08;一&#xff09;cout、cerr和clog流对象 1、cout 流对象 2、cerr 流对象 3、clog流对象 &#xff08;二&#xff09;用函数put输出字符 &#xff08;三&#xff09;用函数 write 输出字符 一、C的标准输出流 标准输出流——流向标准输…...

C语言序列化和反序列化--TPL(一)

TPL TPL说明网站 C语言中高效的序列化 您可以使用tpl快速轻松地存储和重新加载C数据。Tpl是一个用于序列化C数据的库。数据以自然二进制形式存储。该API很小&#xff0c;并试图保持“不碍事”。Tpl可以序列化许多C数据类型&#xff0c;包括结构。Tpl与文件、内存缓冲区和文件…...

Session + JWT + Cookie

00&#xff1a;HTTP无状态&#xff08;为了保持状态&#xff0c;前端好麻烦&#xff0c;又要自己存&#xff0c;又要想办法带出去&#xff0c;于是使用cookie&#xff09; 01&#xff1a;Cookie 将用户信息&#xff0c;在每次请求时候 带给后端&#xff08;但是自己存储大小有…...

PaddleOCR2.7+Qt5

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

在Android中解析XML文件并在RecyclerView中显示

1. 引言 最近工作有解析外部xml文件在App中显示的需求&#xff0c;特来写篇文章记录一下&#xff0c;方便下次使用。 2. 准备工作 首先&#xff0c;在项目的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) 是一个开源项目&#xff0c;旨在提供一种标准化的方法来连接和共享数据空间中的数据。它是 Eclipse Foundation 下的一个项目&#xff0c;目标是促进数据共享和数据交换的互操作性。以下是 EDC 的一些…...

windows下nginx配置https证书

1、制作证书 1.1 安装工具openSSL。下载地址&#xff1a;http://slproweb.com/products/Win32OpenSSL.html Win64OpenSSL_Light-3_1_0.exe安装&#xff08;假定安装位置在 d:\openSSL\&#xff09; 1.2 配置openSSL环境。 新建系统变量OpenSSL值为d:\openSSL\bin&#xff0c;相…...

Llama改进之——RoPE旋转位置编码

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

Python的解析网页

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

VBA技术资料MF159:实现某个区域内的数据滚动

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

开源DMS文档管理系统 Nuxeo Vs Alfresco对比及 API 使用概述

1. 文档管理系统是什么 文档管理系统&#xff08;DMS&#xff1a;Document Management System&#xff09;是一种软件系统&#xff0c;用于组织、存储、检索和管理电子文档和文件。这些文件可以是各种格式的电子文档&#xff0c;如文本文档、电子表格、图像、音频或视频文件等…...

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的个数

题目&#xff1a; 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中设置位的个数&#xff08;也被称为汉明重量&#xff09;。 这道题比较简单&#xff0c;直接对最后一位进行与1的与操作&#xff0c;然…...

gitea的git库备份与恢复

文章目录 gitea库的备份与恢复概述笔记实验环境更新git for windows更新 TortoiseGit备份已经存在的gitea的git库目录使用gitea本身来备份所有git库目录将gitea库恢复到新目录m1m2m3启动gitea - 此时已经恢复完成FETCH_HEAD 中有硬写位置再查一下app.ini, 是否改漏了。m1m2 总结…...

【强化学习05】从Q学习到深度Q学习

深度Q学习&#xff08;Deep Q-Learning, DQN&#xff09;是将深度学习与Q学习结合起来的一种强化学习方法&#xff0c;利用神经网络来近似Q值函数&#xff0c;解决传统Q学习在大规模或连续状态空间中的局限性。下面详细解释DQN的机理。 背景知识 Q学习 Q学习是一种值函数法&…...

FPGA实现多路并行dds

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

ArcgisPro3.1.5安装手册

ArcgisPro3.1.5安装手册 一、目录介绍: 二、安装教程&#xff1a; (1)安装顺序&#xff1a;最先安装运行环境&#xff08;runtime6.0.5&#xff09;,接着安装install里面的文件&#xff0c;最后复制path里面的文件替换到软件bin文件夹下即可。 (2)具体安装步骤&#xff…...

三大主流框架

Web前端开发领域中&#xff0c;三大主流框架通常指的是&#xff1a; React&#xff1a;由Facebook开发的一个用于构建用户界面的JavaScript库。React以其组件化、声明式编程和虚拟DOM等特点而广受欢迎&#xff0c;能够高效地更新和渲染大型应用。 Vue.js&#xff1a;由尤雨溪创…...

【C++】:vector容器的底层模拟实现迭代器失效隐藏的浅拷贝

目录 &#x1f4a1;前言一&#xff0c;构造函数1 . 强制编译器生成默认构造2 . 拷贝构造3. 用迭代器区间初始化4. 用n个val值构造5. initializer_list 的构造 二&#xff0c;析构函数三&#xff0c;关于迭代器四&#xff0c;有关数据个数与容量五&#xff0c;交换函数swap六&am…...

必看项目|多维度揭示心力衰竭患者生存关键因素(生存分析、统计检验、随机森林)

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

拦截器与 JWT 联合使用详解

1. 核心概念1.1 什么是 JWT&#xff1f;JWT 是一个开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间以 JSON 对象的形式安全地传输信息。该信息可以被验证和信任&#xff0c;因为它是数字签名的。JWT 结构&#xff1a;Header&#xff08;头部&#xff09;&…...

宇树机器狗Go2仿真入门:Gazebo环境下Gmapping建图全流程(附避坑指南)

宇树机器狗Go2仿真实战&#xff1a;Gazebo环境下的Gmapping建图与避坑指南 当四足机器人遇上SLAM技术&#xff0c;会碰撞出怎样的火花&#xff1f;宇树科技&#xff08;Unitree&#xff09;推出的Go2机器狗凭借其灵活的机动性和开源控制系统&#xff0c;已成为机器人开发者的热…...

2026好用的企业内网通讯软件:哪家更适合你?

2026年&#xff0c;企业数字化办公的浪潮已进入深水区。随着《数据安全法》等法规的深度落地&#xff0c;以及企业对核心数字资产掌控权的重视&#xff0c;一个显著的趋势正在发生&#xff1a;企业通讯市场正在经历一场深刻的“向内回归”——私有化部署正从传统行业的无奈之选…...

从理论到实践:基于EKF与1RC模型的锂离子电池SOC在线估计与Simulink仿真

1. 锂离子电池SOC估计为什么这么重要&#xff1f; 如果你用过电动车或者手机&#xff0c;肯定遇到过电量显示不准的情况。明明显示还有30%电量&#xff0c;结果突然关机&#xff1b;或者充到80%就再也充不进去了。这些问题的核心&#xff0c;都跟电池的荷电状态&#xff08;SO…...

用ESP32-S3和百度AI做个会聊天的智能音箱(Arduino+文心一言+语音识别)

用ESP32-S3和百度AI打造会聊天的智能音箱&#xff1a;从硬件组装到语音交互全流程 想象一下&#xff0c;清晨醒来只需对桌上的小盒子说句"今天天气如何"&#xff0c;就能听到温柔的女声播报天气预报&#xff1b;工作时随口问"量子计算是什么"&#xff0c;立…...

2026年AI就业风口!这5个神仙岗位,高薪低门槛,普通人也能转行!

根据LinkedIn数据&#xff0c;2026年AI相关岗位增长迅猛&#xff0c;其中AI咨询顾问、机器学习工程师、AI产品经理、数据与检索工程师等岗位需求旺盛&#xff0c;且部分岗位对计算机科学学位要求不高。文章详细介绍了这5个岗位的火热原因、转行路径及薪资范围&#xff0c;并给出…...

forkrun:革新数据处理,突破传统并行工具性能瓶颈

【导语&#xff1a;forkrun 作为一款自调优工具&#xff0c;可直接替代 GNU Parallel 和 xargs -P。它在现代 CPU 上能显著提升基于 Shell 的数据准备速度&#xff0c;尤其在 NUMA 架构上表现出色&#xff0c;为数据处理领域带来了新的变革。】数据处理速度的飞跃&#xff1a;5…...

智慧园区能源管理系统解决方案

某园区集成生产、办公、生活三大功能&#xff0c;建设有生产厂房、化学品库、辅助用房、气罐站、研发楼、综合楼及其他配套设施&#xff0c;涉及到多种用能&#xff0c;包含电能、天然气、压缩空气、冷热能等&#xff0c;带来日益高昂的能耗成本与能源浪费隐患。 1、制冷空调监…...

自动驾驶RL微调实战:如何用MotionLM提升模型可靠性(附Waymo数据集配置)

自动驾驶RL微调实战&#xff1a;如何用MotionLM提升模型可靠性&#xff08;附Waymo数据集配置&#xff09; 在自动驾驶技术快速迭代的今天&#xff0c;强化学习&#xff08;RL&#xff09;微调已成为提升模型可靠性的关键手段。不同于传统模仿学习&#xff08;IL&#xff09;的…...

告别Putty和串口助手:这款LVGL开发的LCOM,如何成为我的嵌入式开发调试新宠?

告别Putty和串口助手&#xff1a;这款LVGL开发的LCOM&#xff0c;如何成为我的嵌入式开发调试新宠&#xff1f; 作为一名嵌入式开发者&#xff0c;每天与各种开发板、单片机打交道是家常便饭。调试过程中&#xff0c;串口通信工具就像我们的"第三只手"&#xff0c;从…...