当前位置: 首页 > 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 函数显示字符,不但可以显示整个字符串的内容,也可以显示部分字符串的内容

http://www.lryc.cn/news/357254.html

相关文章:

  • C语言序列化和反序列化--TPL(一)
  • Session + JWT + Cookie
  • PaddleOCR2.7+Qt5
  • 在Android中解析XML文件并在RecyclerView中显示
  • Notes for video: EDC-Con 2022/01 - EDC Conceptual Overview and Architecture
  • windows下nginx配置https证书
  • Llama改进之——RoPE旋转位置编码
  • Python的解析网页
  • VBA技术资料MF159:实现某个区域内的数据滚动
  • 开源DMS文档管理系统 Nuxeo Vs Alfresco对比及 API 使用概述
  • lambda函数实践
  • [leetcode hot 150]第一百九十一题,位1的个数
  • gitea的git库备份与恢复
  • 【强化学习05】从Q学习到深度Q学习
  • FPGA实现多路并行dds
  • ArcgisPro3.1.5安装手册
  • 三大主流框架
  • 【C++】:vector容器的底层模拟实现迭代器失效隐藏的浅拷贝
  • 必看项目|多维度揭示心力衰竭患者生存关键因素(生存分析、统计检验、随机森林)
  • centos安装Redis
  • 继承与多态2
  • 在RT-Thread下为MPU手搓以太网MAC驱动-3
  • Cocos Creator 2D物理引擎的使用详解
  • 618局外人抖音:别人挤压商家“拼价格”,它默默联合商家“抢用户”?
  • 【Unity AR开发插件】五、运行示例程序
  • JavaScript className 类名属性操作
  • 做场外个股期权怎么询价
  • Databend 开源周报第 146 期
  • Android12.0 SIM卡语言自适应
  • 滴滴一季度营收同比增长14.9%至491亿元 经调整EBITA盈利9亿元