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++IO流 -> 正文阅读

[C++知识库]C++IO流

流:诺干字节数据从一端到另一端

流类体系:

1.流对象

2.流运算符 <<? >>

输入输出流

1.ostream 类?

(1)cout?可重定向为文件

(2)cerr 不能重定向为文件

(3)clog 可重定向为文件

(4)字符类的处理

(5)格式控制字符:#include? <iomanip>

? ?*设置有效位数:setprecision(int)

? ?*设置精度:fix结合setprecision(int)

2.istream 类 cin

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	//字符
	cout.put('A');       //A
	cout << 'A' << endl; //A
	char B = 'B';        
	cout.put(B);         //B
	//字符串
	cout.write("Iloveyou", 5);//Ilove
	//字符输入
	cout.put(cin.get());//B=cin.get();cout.put(B);
	//清空缓存区
	while (cin.get() != '\n');//while(getchar()!='\n');
	//字符串输入
	char str[20]="";
	cin.getline(str, 20);
	cout.write(str, 20);
	//格式控制字符
	double p = 3.1415926;
	cout << setprecision(3) << p << endl;//3.14
	cout << fixed << setprecision(6) << p << endl;//3.141593
	//进制输出
	cout << hex << 32 << endl; //16进制
	cout << oct << 32 << endl; //8进制
	cout << setbase(8) << 32 << endl;//8 10 16进制
	//制表
	cout << setw(8) << "ABC" << setw(16) << "DEF" << setw(32) << "GHI" <<endl;
	//右对齐
	cout << setiosflags(ios::right);//setiosflags(ios::left)左对齐
	cout << "ABC" << setw(8) << "DEF" << setw(16) << "GHI" << setw(32);
	return 0;
}

字符流

1.#include <sstream>

(1)istringstream 类

(2)ostringstream 类

(3)stringstream 类(一般使用)

2.获取字符流对象中的数据

(1)string str()? //获取string

(2)void str(const string& str); //重新设置字符流对象的数据

3.一般字符流对象做字符串处理

(1)字符串的分割

(2)字符串转换问题

4.一个流多次做数据操作,要做clear操作

#include <iostream>
#include <sstream>
using namespace std;
int main()
{
	stringstream sso(string("Iloveyou"));
	cout << sso.str() << endl;
	stringstream ssn;
	ssn << "Iloveyou";
	cout << ssn.str() << endl;
	string data;
	ssn<<data;
	cout << data << endl;
	//数字转字符
	int num = 1234;
	char str[20] = "";
	stringstream ssc;
	ssc << num;
	ssc >> str;
	cout << str << endl;
	//字符转数字
	stringstream ssa("1234");
	int temp;
	ssa >> temp;
	cout << temp << endl;
	//分割
	stringstream sss("11,22,33,44,55,66,77,88,99");
	int arr[9];
	char c[8];
	for (int i = 0; i < 9; i++)
	{
		if (i==8)
		    sss >> arr[i];
		else
			sss >> arr[i] >> c[i];
	}
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << "\t";
	}
	//clear操作
	ssc.clear();
	ssc << num;
	ssc >> str;
	cout << str << endl;
	return 0;
}

文件流

#include <fstream>

1.流类体系

(1)ofstream 类? 写操作? output输出到文件

(2)ifstream 类? 读操作

(3)fstream 类? 可读可写

2.打开关闭文件

(1)打开文件:void? open? (const? char*? URL,ios::openmode? mode);

(2)读写方式

*ios::in? 读

*ios::out? 写,创建

*ios::app? 追加,创建

*ios::ate? 追加,文件指针指向末尾

*ios::trunc? 创建

*ios::nocreate??

*ios::noreplace? 不替换

*ios::binary? 二进制

*读写组合:*ios::in|*ios::out|*ios::binary

(3)关闭文件:void? close( )

3.判断是否打开成功

(1)文件流对象重载运算

(2)is_open成员函数判断

4.读写文件

(1)流的方式读写

(2)二进制方式读写

5.文件指针定位

(1)ifstream类的对象

*istream& seekg(long int pos);

*istream& seekg(long int pos,ios::seekdir position);

(2)ofstream类的对象

*ostream& seekp(long int pos);

*ostream& seekp(long int pos,ios_base::seekdir position);

(3)ios_base::seekdir

*ios::beg? 文件开始位置

*ios::end? 文件结束位置

*ios::cur? 文件当前位置

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
void rwfile(const char* rfilename, const char* wfilename)
{
	fstream rfn(rfilename, ios::in);
	fstream wfn(wfilename, ios::out);
	1.流的方式,会忽略空格和换行
	//while (1)
	//{
	//	char a;
	//	rfn >> a;
	//	if (rfn.eof())break;
	//	wfn << a;
	//}
	2.成员函数,不会忽略空格和换行
	//while (1)
	//{
	//	char a;
	//	rfn.get(a);
	//	if (rfn.eof())break;
	//	wfn.put(a);
	//}
	//3.字符串
	while (!rfn.eof())
	{
		char str[1024] = "";
		rfn.getline(str,1024);
		wfn.write(str, strlen(str));
	}
	rfn.close();
	wfn.close();
}
void binaryrwfile(const char* rfilename, const char* wfilename)
{
	//二进制读写
	fstream rfn(rfilename, ios::in|ios::binary);
	fstream wfn(wfilename, ios::out|ios::binary);
	while (!rfn.eof())
	{
		char str[1024] = "";
		rfn.read(str, 1024);
		wfn.write(str, 1024);
	}
	rfn.close();
	wfn.close();
}
void seekfile(const char* filename)
{
	fstream fread(filename, ios::in);
	if (!fread)
		cout << "打开失败" << endl;
	fread.seekg(4);
	char a = fread.get();
	cout << a;
	fread.seekg(-4, ios::end);
	a = fread.get();
	cout << a;
	fread.close();
}
int main()
{
	rwfile("read.txt", "write.txt");
	binaryrwfile("read.txt", "write.txt");
	return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:38:17  更:2021-12-08 13:39:04 
 
开发: 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 11:14:29-

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