一. 流类库的结构组成:
1.流类库都派生于同一个基类: class streambuf
派生类: filebuf(文件缓存区) strstreambuf(字符串缓存区) stdiobuf(标准输入输出缓存区)
2.
基类: ios
派生类: istream ostream
派生类:ifstream istream_withassign istrstream ofstream ostream_withassign ostrstream
(文件读取类) (重载运算符“=”) (输入串流) (文件输出流) (输出串流)
3.
基类: iostream
派生类: fstream strstream stdiostream
(文件输入输出流) (字符串输入输出流) (标准输入输出流)
二. 流输入函数
#include<iostream>
#include<stdlib.h>
using namespace std;
//输入cin函数
void main1()
{
char ch;
cin >> ch;
cout <<(char)(ch-32);
cin.get();
cin.get();
}
// cin.get()函数 从键盘输入字符
//cout.put()函数
void main2()
{
char ch=0;
while ((ch=cin.get())!='\t')
{
cout.put(ch);
}
}
//cin.getline(首地址,长度范围)
void main3()
{
char str[30] = { 0 };
cin.getline(str, 10);//限定输入长度
cout << str;
system("pause");
}
三.输入输出流的控制
#include<iostream>
#include<iomanip> //控制输出流
using namespace std;
/*cout.write(首地址,长度范围) 输出范围限定*/
void main11()
{
cout.put('A').put('B').put('C');
char str[] = "123456789afcdefg";
cout.write(str,10); //限定输出范围
cin.get();
}
//cout 八进制 十六进制输出
//hex oct 进制强制标识
void main22()
{
int num = 01070;
cout << num << endl; //十进制输出
cout << hex<<num<<endl;//十六进制输出
cout << oct << num << endl;//八进制输出
cout << num;
cin.get();
}
//浮点数精确输出
void main33()
{
double db = 1.9888888888888888888;
cout << db << endl; // 默认显示小数点后六位
cout << setprecision(15) << db;//默认显示小数点的精确度
cin.get();
}
//输出宽度设置与填充字符设置
void main44()
{
cout.width(20);//输出宽度设置,如果实际长度超过了设定长度,则按照实际长度输出。
cout.fill('*'); //填充符号
cout.setf(ios::left);//左对齐
cout<< "hello world"<<endl;
cout.width(20);//输出宽度设置,如果实际长度超过了设定长度,则按照实际长度输出。
cout.fill('*');