复习
对于虚函数,父类无法直接访问子类的新定义成员,但是可以通过子类成员函数内部简介使用子类成员
I\O流:
文件流:
C++的文件打开方式:
ios::in 读取
ios::out 写入(如果文件不存在,可以自动创建,且打开之后清空原内容)
ios::app 追加
ios::binary 二进制
(为什么 in 表示读取,out表示写入,是以程序而言,相间附图 inout含义解释)
- 文件打开方式组合用 | 连接
put() put() 函数
char ch = 'A';
file.put(ch);//写一个字符到文件中
get()函数
char str[128];
file.get(ch);//读取文件中的一个字符
ch = file.get();//读取文件中的一个字符
file.get(str,128);//从文件中读取一个字符串,长度不超过128
file.get(str, 128, 'A');//从文件中读取一个字符串,长度不超过128,遇到空格A结束
(注意,get函数遇到换行会自动停止)
read函数 write函数
char str1[200];
file.read(str1,128);//从文件中读取128个字节的内容放到str中
int x;
file.read((char*)&x, sizeof(int));//从文件中读取一个int,放到x当中
file.write((char*)&x, sizeof(int));
getline 函数
file.getline(str, 128);
file.getline(str, 128,' ');
cin cout 输入输出运算符
file >> x;//用文件中的内容给x赋值
file << x;//在文件中输出x的值
seekp tellp-得到文件指针偏移量
streamoff off=file.tellp();//streamoff 就相当于int
file.seekp(0,ios::beg);
输入输出流(并不理解是什么意思)
(头文件-iomanip)
-
cin.get
-
cin.getline
-
关于cout的几个输出控制方式
说明:
- 文本文件也称为字符流;二进制文件也称为字节流
- C语言通过文件指针对文件进行操作
- C++通过对象对文件进行操作
- ios::beg 表示文件开头
- ios::cur 表示文件当前位置
- ios::end 文件结尾
- hex-16进制、otc-8进制、dec-10进制
代码实例
#include<iostream>
#include<fstream>
#include<iomanip>//用来控制cout的输出
using namespace std;
int main()
{
fstream file;
//文件写入函数
file.open("1.txt", ios::out);
//判断文件是否打开成功-is_open函数
if (file.is_open())cout << "文件打开成功" << endl;
else
{
cout << "文件打开失败" << endl;
}
char ch = 'A';
char str[128];
file.put(ch);//写一个字符到文件中
file.get(ch);//读取文件中的一个字符
ch = file.get();//读取文件中的一个字符
file.get(str,128);//从文件中读取一个字符串,长度不超过128
file.get(str, 128, 'A');//从文件中读取一个字符串,长度不超过128,遇到空格A结束
//read函数和write函数
char str1[200];
file.read(str1,128);//从文件中读取128个字节的内容放到str中
int x;
file.read((char*)&x, sizeof(int));//从文件中读取一个int,放到x当中
file.write((char*)&x, sizeof(int));
//getline 函数
file.getline(str, 128);
file.getline(str, 128,' ');
//cin cout 输入输出运算符
file >> x;//用文件中的内容给x赋值
file << x;//在文件中输出x的值
//tellp得到指针偏移量、seekp
streamoff off=file.tellp();//streamoff 就相当于int
file.seekp(0,ios::beg);
file.close();
//输入输出关系
int num = 20;
cout << "C++中常见的格式控制" << endl;
cout << hex<<num << endl;//hex 表示用十六进制打印后面的内容 otc-8 dec-10
cout << setw(5) << setfill('A') << num << endl;//至少输出5位,不足的用字符填充
cout << setiosflags(ios::left) << setw(5) << setfill('A') << num << endl;//setiosflags(ios::left) 设置左对齐、setw(5)至少输出5位、setfill('A')不足用A填充
cout << "以下内容用于说明精度控制函数setprecision()函数、setiosflags(ios::fixed)强制用小数输出" << endl;
float weight = 3.141592657;
cout << weight << endl;
cout << setprecision(10) << setiosflags(ios::fixed) << weight << endl;
cin.get();
return 0;
}