一,C++输入和输出的概述
1)流和缓冲区
流是程序和源流或流目标之间的桥梁
磁盘驱动器以512字节(或更多)的块为单位传输信息,程序通常每次只能处理一个字节信息。所以缓冲区用来匹配这两种不同的信息传输速率。
输出时,先填满缓冲区,然后把整块数据传输给硬盘,并清空缓冲区,以备下一批输出使用。
2)isotream类管理细节
cin 对象对应于标准输入流,关联到标准输入设备。wcin 对应 wchar_t
cout 标准输出流,wcout 对应 wchar_t
cerr 标准错误流,没有缓冲直接发送给屏幕,而不会等到缓冲区填满或新的换行符,wcerr对应 wchar_t
clog 标准错误流,有缓冲区,wclog对应 wchar_t
二,使用cout进行输出
1)重载<< 操作符 : ostream & operator<<(int);
C++指向字符串存储位置的指针来表示字符串
#include <iostream> using namespace std; int main() { char *pn="tianshuai"; char name[10]="tianshuai"; cout<<pn<<endl; cout<<name<<endl; cout<<"nihao"<<endl; return 0; }
输出地址:cout<<&pn<<endl; cout<<(void *)pn<<endl; //不知道为什么输出不一样呢?
2)拼接输出: cout<<"tianshuai"<<V5<<endl; //cout<<"tianshuai" 返回cout对象
3)其他ostream方法:
cout.put('W'); //每次输出一个字符类型 字符
cout.put(65); //输出 a
char *pn = "tianshuai";
cout.write(pn,4); //输出 tian
4)刷新输出缓冲区
换行符 "\n" endl flush 刷新输出缓冲区。
5)用cout进行格式化
修改显示时使用的技术系统:
cout<<dec; //显示整数 采用 十进制 dec(cout);
cout<<hex; //显示整数 采用 十六进制
cout<<oct; //显示整数 采用 八进制
调整字段宽度:
cout.width(12); //只影响接下来显示的第一个项目,然后恢复默认。且放到12字符最右端(右对齐)
cout<<”#"; //输出为:" #";
注意:C++永远不会截断数据,假如在宽度为2的字段中打印一个7位值,C++将扩充字段
填充字符:
cout.fill("*"); //填充空白字符为 * 。影响整个程序输出
设置精度:
注意:C++默认精度为6位(末尾的0将不显示)
cout.precision(2); //精度设置为2 例如:2.153 输出为2.1
打印末尾的0和小数点:
cout.setf(ios_base::showpoint); //显示末尾0和小数点 ,不要忘记精度默认为6 例如:2.00 显示为2.00000
setf详解
注意:只有当基数为10时才使用加号。C++将十六进制和八进制都视为无符号的
cout.setf(ios_base::internal,ios_base::adjustfield); //符号或基数左对齐,值右对齐
cout.setf(ios_base::right,ios_base::adjustfield); //右对齐
iomanip头文件
cou<<setw(5)<<setfill('*')<<setprecision(3)<<endl; //设置宽度为5,填充为 * , 精度为4(小数点后4位)