C++输入输出流

输入/输出流类:iostream---------i input(输入) o output(输出) stream:流

iostream:

istream类:输入流类-------------cin:输入流类的对象

ostream类:输出流类------------cout:输出流类的对象

1 输入流

数据是从键盘或显示器流向输入缓冲区中,最后刷新了再流向内存

输入流:istream

istream实例化了cin对象

重载了运算符:>>

输入格式:

cin>>变量1;

cin>>变量1>>变量2>>变量3.........;

原型:

istream &cin >>基本的数据类型;

istream &cin >>int;

istream &cin >>char;

.......

注:

如果需要一次性输入多个数据,那么多个数据需要用空格进行间隔

另外需要输入回车,把输入的内容刷新到内存中

2 输出流

数据是从内存流向输出缓冲区,刷新时再从输出缓冲区流向终端或显示器

缓冲区的大小:

#define BUFSIZ 512个字节

2.1 格式

输出流:ostream

ostream实例化了cout对象、cerr对象(发生一些错误就会调用cerr输出错误信息)、clog对象(输出一些日志信息)

重载了运算符:<<

输出格式:

cout<<数据1;

cout<<数据1<<数据2<<数据3,........;

原型:

ostream类中:

ostream & operator <<(int)

{

ostream cout;

.....

return cout;

}

ostream & operator <<(char)

{

}

ostream &cout << 基本的数据类型;

ostream &cout << int ;

ostream &cout << char;

ostream &cout << unsigned int;

ostream &cout << char *;

ostream &cout << const char *;

ostream &cout << float;

.........

注:

1)当输出遇到endl时,会刷新输出缓冲区

2)当流对象使用完或超出作用域时,也会刷新输出缓冲区

3)当输出缓冲区装满时,也会刷新一次缓冲区

2.2 采用格式化输出

C语言的格式化输出也支持:\n、\r、.......

十进制形式输出:<iomanip>

dec:十进制

oct:八进制

hex:十六进制

....

示例:

复制代码
#include <iostream>  
#include<string>  
#include <iomanip> //不要忘记包含此头文件  
using namespace std;  
int main()  
 {   
   int a;  
   cout<<"input a:";  
   cin>>a;  
   cout<<"dec:"<<dec<<a<<endl; //以上进制形式输出整数  
   cout<<"hex:"<<hex<<a<<endl; //以十六进制形式输出整数a  
   cout<<"oct:"<<setbase(8)<<a<<endl;//以八进制形式输出整数a  
   string pt= "China";         //pt指向字符串"China"  
   cout<<setw(10)<<pt<<endl; //指定域宽为10,输出字符串  
   cout<<setfill('*')<<setw(10)<<pt<<endl;//指定域宽10,输出字符串,空白处以"*"填充  
   double pi=22.0/7.0; //计算pi值  
   cout<<setiosflags(ios::scientific)<<setprecision(8);//按指数形式输出,8位小数  
   cout<<"pi="<<pi<<endl; //输出pi值  
   cout<<"pi="<<setprecision(4)<<pi<<endl;//改为4位小数  
   cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;//改为小数形式输出,精度为4   
   cout<<"pi="<<fixed<<pi<<endl;//fixed确定小数点后精度为4   



cout.setf(ios::showbase); //设置输出时的基数符号  
   cout<<"dec:"<<a<<endl; //默认以十进制形式输出a  
   cout.unsetf(ios::dec); //终止十进制的格式设置  
   cout.setf(ios::hex); //设置以十六进制输出的状态  
   cout<<"hex:"<<a<<endl; //以十六进制形式输出a  
   cout.unsetf(ios::hex); //终止十六进制的格式设置  
   cout.setf(ios::oct); //设置以八进制输出的状态  
   cout<<"oct:"<<a<<endl; //以八进制形式输出a  
   cout.unsetf(ios::oct); //终止以八进制的输出格式设置  
   char *pt="China"; //pt指向字符串"china"  
   cout.width(10); //指定域宽为10  
   cout<<pt<<endl; //输出字符串  
   cout.width(10); //指定域宽为10  
   cout.fill('*'); //指定空白处以'*'填充  
   cout<<pt<<endl; //输出字符串  
   double pi=22.0/7.0; //计算pi值  
   cout.setf(ios::scientific);//指定用科学记数法输出  
   cout<<"pi="; //输出"pi="  
   cout.width(14); //指定域宽为14  
   cout<<pi<<endl; //输出"pi值  
   cout.unsetf(ios::scientific); //终止科学记数法状态  
   cout.setf(ios::fixed); //指定用定点形式输出  
   cout.width(12); //指定域宽为12  
   cout.setf(ios::showpos); //在输出正数时显示"+"号  
   cout.setf(ios::internal); //数符出现在左侧  
   cout.precision(6); //保留6位小数  
   cout<<pi<<endl; //输出pi,注意数符"+"的位置  
   return 0;   
}  

输出结果如下:

相关推荐
zoujiahui_201819 分钟前
Python 包与环境管理工具 uv
开发语言·python·uv
吴声子夜歌32 分钟前
Java面试题——JVM(二)
java·开发语言·jvm
CRMEB35 分钟前
商城大促活动策划全流程:从定目标到复盘四阶段
java·开发语言·人工智能·ai·开源·php
denglinqings35 分钟前
Java开发从入门到精通所有课程
java·开发语言
程序猿阿森1 小时前
Python 闭包与装饰器:从入门到精通
开发语言·python·面试
余额瞒着我当琳1 小时前
C++--vector底层,leetcode118杨辉三角实战,对于传统reserve的坑点,迭代器失效
开发语言·c++
曹牧1 小时前
C#:字符串做20位截断
开发语言·c#
醉城夜风~2 小时前
(超详细)C++多态(Polymorphism)
开发语言·c++
这是个栗子2 小时前
【JS代码分析】前端鉴权基础:Token 的本地存储与状态重置实践
开发语言·前端·javascript
wuyk5552 小时前
7.AVL 树:第一个自平衡二叉搜索树
开发语言·stm32·单片机·算法