IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> C++输入输出流 -> 正文阅读

[移动开发]C++输入输出流

C++输入输出流

一、关于C++ IO库

1.引言

? c++使用类型安全的IO流操作,不同类型的IO流操作都是重载的,没有定义过IO功能的类型不具备IO操作能力。

? 通过修改 和扩充,C++既可以为标准数据类型的IO,也能用于自定义类型的IO,这种扩展性是C++最有价值的特点之一。

? 所谓流stream是指数据从一个未知流向另一个位置,流是字节的序列。

? 输入输出是一种数据传递操作,可以看作字符序列在计算机内存与外设之间的流动,c++将数据从一个对象到另一个对象的流动称为流。

2.IO流库的层次结构

? ·C++ IO流库中有两个平行基类:

? streambuf

? ios

? ios直接派生类:

? ·输入流类istream

? ·输出流类ostream

? ·文件流类基类fstreambase

? ·字符串流类基类strstreambase

3.IO流库的头文件

? iostream:包含了对输入输出流进行操作的基本信息,还包括cin、cout、cerr、clog

? fstream:用于用户管理文件的IO操作

? strstream:用于字符串流IO

? stdiostream:用于混合使用C和C++的IO操作

? iomanip:用于格式化IO

二、无格式输入输出

? 无格式IO就是按照系统预定义的格式进行输入输出

? cin用于处理标准输入,即键盘输入

? cout用于处理标准输出,即屏幕输出

? 原函数:

ostream cout(stdout);
istream cin(stdin);

? 重载运算符>>和<<:

cin>>E1>>E2;
cout<<E<<E2<<endl;//endl用于换行

三、C++的格式化输入输出

1.方式一 用流对象的成员函数格式化

? 流成员函数主要是通过对状态标志、输出宽度、填充字符以及输出精度的操作来完成输入、输出格式化。

? 输入输出的格式由各种状态标志来决定,在ios类中定义为枚举量。

? 因为定义在ios类中,引用时必须包含ios::前缀。使用时全用符号名,不能用数值。

//设置状态标志的函数
long ios::setf(long flags);
//清除状态标志的函数
long ios::unsetf(long flags);
//用函数flags取状态标志的两种形式:
long ios::flags();
long ios::flags(long flag);
//用于设置输出宽度(只对其后的第一个输出项有效)
int ios::width(int len);//设置输出宽度,并返回原输出宽度
int ios::width();//返回当前输出宽度,默认输出宽度为0
//设置填充字符(当输出值不满输出宽度时用填充字符填充,故需要与width函数配合使用)
char ios::fill(char ch);//设置填充字符,并返回设置前的填充字符
char ios::fill();//返回当前填充字符
//设置输出精度(默认为6)
int ios::precision(int p);//重新设置输出精度
int ios::precision();//返回当前输出精度
//输出单个字符:
char ios::put();
//读入一个字符(若遇到文件结束符,函数的返回值就是读入的字符,遇到输入流文件结束符返回EOF)
char ios::get();
char ios::get(char ch);//读入的参数赋值给ch
void ios::get(char *ch,int n,char end);//在遇到end字符前读n-1个字符赋值给*ch
//读入一行字符
void ios::getline(char *ch,int n,char end);

? istream其他成员函数

bool eof();//表示文件结束
char peek();//观察返回下一个字符,观察指的是流指针位置不变
void putback();//将前面用get或getline读取的字符插入到当前流指针位置
void ignore(int n,char end);//跳过n个字符,遇到end不继续跳
void ignore();//ignore(1,EOF)

? 以上函数的使用:

<流对象名>.<函数名>(ios::<状态标志>);
cout.setf(ios::showpos);//设置状态标志showpos
cout.unsetf(ios::showpos);//删除状态标志showpos
cout.with(10);//设置宽度十
cout.put('a').put(97);//输出aa
cin.get(ch,20,'\n');//读到换行符号之前读19个字符给ch
cin.eof();//文件结束返回true
cin.peek();//观察返回下一个字符
cin.ignore(5,'A');//跳过五个字符,遇到A不继续跳

2.方式2:用控制符格式化

//设置输入输出宽度setw(int)
//只对后边第一个输入输出有效
//实际宽度小向右对其
//反之按数据实际宽度输出
cout<<E1<<setw(6)<<E2<<setw(4)<<E3;
//设置填充字符setfill(char)
//设置后直到下一次设置前一直有效
cout<<E1<<setfill('a')<<E2<<setfill('b')<<E3;
//设置输出精度setprecision(int)
//参数为0默认六位输出
cout<<E1<<setprecision(6)<<E2<<setprecision(4)<<E3;
//设置标志setiosflags(long flag)
cout<<setiosflags(ios::fixed)<<E;
//设置终止输出格式resetiosflags()
cout<<resetiosflags();
//设置输入输出整数数制dec hex oct
//换行控制符endl
//输出单字符控制符ends

? 用户自定义控制符:

ostream &<控制符函数名>(ostream stream){
	//自定义语句
	return stream;
}
istream &<控制符函数名>(istream stream){
	//自定义语句
	return stream;
}

3.flags:

flag参数作用
ios::fixed定点数表示实数
ios::scientific科学计数法表示实数
ios::left左对齐
ios::right右对齐
ios::uppercase大写表示
ios::showpos输出正数时给出+
ios::skipws忽略前导空格

四、文件的输入输出

1.文件

? C++把文件看作是一个字符(字节)的序列,即由一个个字符(字节)顺序组成;

? 根据数据组织形式,可分为ASCII文档和二进制文件

2.文件流

? iostream->fstream

? istream->ifstream (mod值ios::in)

? ostream->ofstream (mod值ios::out)

void open(char *filename,int mod);//使用open()函数简历或打开一个文件
void close();//使用close()函数关闭一个文件
void read(char *ch,int len);//读入len个字符
void write(char *ch,int len);//读入len个字符
//示例
#include<iostream>
#include<fstream>
using namespace std;
int main(){
    char s[100];
	ofstream ostrm;
    ostrm.open("f1.txt",ios::out);
    ostrm.write(s,10);
    ostrm<<120<<endl;//写操作
    ostrm.close();
    ifstream istrm;
    istrm.open("f2.txt",ios::in);
    cin>>s;
    istrm.read(s,10);
    istrm.close();
}

五、字符串流(内存流)

1.特点

? 以字符数组作为输入输出对象

? 具有相应缓冲区

? 在字符数组中可以存放字符,也可以存放整数、浮点数

2.原型

ostrstream::ostrstream(char *buffer,int n,int mod=ios::out);
istrstream::istrstream(char *buffer,int n);
istrstream::istrstream(char *buffer);
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:21:45  更:2022-03-11 22:22:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 18:36:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码