我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++ IO设备读写功能实现详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++ IO设备读写功能实现详解

1 输入输出IO流

1.1 图解输入输出流

IO设备:文件、终端(dos黑框框)、特殊的数据类型(streamstring)

1.2 输入输出流类库

C++中的输入输出流是靠定义好的类库来操作的

2 文件读写操作

2.1 文件的打开方式

2.2 文件读写类库的头文件

头文件:fstream

ofstream:读写

istream:读操作

ofstream:写操作

2.3 文本文件读写

使用ofstream来写文本

ofstream写入文件默认打开方式是ios::trunc,即没有文件那么创建,该文件存在并且有内容会直接清空内容

#include<iostream>
#include<windows.h>
#include<fstream>
using namespace std;
int main() {
	ofstream outfile;
	string name;
	int age;
	cin >> name >> age;
	outfile.open("C:/Users/98207/desktop/test.txt", ios::out);  // 写入文件,没有文件会新建
	outfile << name << endl;
	outfile << age;
	outfile.close();  // 文件结束需要关闭
	return 0;
}

使用ifstream读取文件

程序:

#include<iostream>
#include<windows.h>
#include<string>
#include<fstream>
using namespace std;
int main() {
	ifstream infile;
	string str;
	int age;
	infile.open("C:/Users/98207/desktop/test.txt", ios::in);  // 读取文件
	while (1) {
		if (infile.eof()) {
			break;
		}
		infile >> str;
		cout << str << endl;;
		// getline(infile, str);
		// cout << str << endl;
	}
	infile .close();
	return 0;
}

结果:

bian
12

使用fstream来读写文件

写入文件fstream默认不会截断文件

#include<iostream>
#include<windows.h>
#include<string>
#include<fstream>
using namespace std;
int main() {
	string name;
	int age;
	fstream outfile;
	outfile.open("C:/Users/98207/Desktop/test2.txt", ios::out);
	cin >> name >> age;
	outfile << name << endl;
	outfile << age;
	outfile.close();
	return 0;
}

读取文件

#include<iostream>
#include<windows.h>
#include<string>
#include<fstream>
using namespace std;
int main() {
	string str;
	fstream infile;
	infile.open("C:/Users/98207/Desktop/test2.txt", ios::in);
	while (1) {
		if (infile.eof()) {
			break;
		}
		infile >> str;
		cout << str << endl;
	}
	infile.close();
	return 0;
}

2.4 二进制的读写

二进制和文本写区别在于数字,二进制数字是把实际字节数写入进去。

比如整数9,那么写入的是4个char字符0009,至于存储的大小端方式要看cpu。

2.4.1 二进制写

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main() {
	fstream outfile;
	char name[20];
	int age;
	// 为什么保存格式是dat,因为使用文本格式会按照文本格式解析,最后出来的是乱码
	outfile.open("C:/Users/98207/Desktop/1.dat", ios::trunc | ios::out | ios::binary);
	cin >> name >> age;
	outfile << name << '\t';
	outfile.write((char*)&age, sizeof(age));  // 二进制写
	outfile.close();
	return 0;
}

2.4.2 二进制读

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main() {
	fstream infile;
	char name[20];
	char temp;
	int age;
	infile.open("C:/Users/98207/Desktop/1.dat", ios::in | ios::binary);
	infile >> name;
	infile.read((char*)&temp, sizeof(temp));  // 丢弃制表符
	infile.read((char*)&age, sizeof(age));
	cout << name << '\t' << age << endl;
	infile.close();
	return 0;
}

2.5 按照特殊格式读写

2.5.1 特殊格式写入

#include<iostream>
#include<fstream>  //ofstream
#include<sstream>  // stringstream
using namespace std;
int main() {
	stringstream ret;
	ofstream outfile;
	string name;
	int age;
	outfile.open("C:/Users/98207/Desktop/test2.txt", ios::out | ios::trunc);
	while (1) {
		cin >> name >> age;
		if (cin.eof()) {
			break;
		}
		ret << name << "\t\t\t" << age << endl;  // ret会累积
		// outfile << ret.str();
		// ret.clear();
	}
	outfile << ret.str();
	outfile.close();
	return 0;
}

2.5.2 特殊格式读取

#include<iostream>
#include<fstream>
#include<string>  // getline, string
using namespace std;
int main() {
	fstream infile;
	string str;
	char name[20];
	int age;
	infile.open("C:/Users/98207/Desktop/test2.txt", ios::in);
	while (1) {
		getline(infile, str);
		if (infile.eof()) {
			break;
		}
		sscanf_s(str.c_str(), "%s %d", name, sizeof(name), & age);  // 这里的参数只能是char类型,这里的空格会替换文件的制表符或者空格
		cout << name << "\t\t\t" << age << endl;
	}
	infile.close();
	return 0;
}

2.6 文件流标志

这里常用的就是is_open()和eof()

2.7 文件指针

输入流指针seekg

原形:basic_istream& seekg( off_type off, // 偏移量

std::ios_base::seekdir dir); // 起始位置

作用:设置输入流位置

参数1:偏移量

参数2:相对位置

  • beg 相对于开始位置
  • cur 相对于当前位置
  • end 相对于结束位置

从开始位置文件指针偏移5个字节,然后读取内容

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main() {
	// ofstream infile;
	ifstream infile;
	string str;
	infile.open("C:/Users/98207/Desktop/1.txt", ios::in);
	infile.seekg(5, ios::beg);  // 从开始位置偏移5个字节
	while (1) {
		getline(infile, str);
		cout << str;
		if (infile.eof()) {
			break;
		}
	}
	infile.close();
	return 0;
}

输入流指针tellg

作用:返回输入流的当前位置(距离文件的起始位置的偏移量)

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main() {
	ifstream infile;
	string str;
	infile.open("C:/Users/98207/Desktop/1.txt", ios::in);
	infile.seekg(5, ios::beg);  // 设置偏移量位5个字节
	cout << "文件指针偏移量:" << infile.tellg() << endl;  // 相对于文件起始位置
	infile.close();
	return 0;
}

结果:

文件指针偏移量:5

E:\Microsoft Visual Studio\code\Project15\x64\Debug\Project15.exe (进程 68440)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

输出流指针seekp

作用:设置输出流位置

函数原形:basic_ostream& seekp( off_type off, // 偏移量

std::ios_base::seekdir dir ); // 起始位置

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
	ofstream outfile;
	outfile.open("user1.txt", ios::out | ios::trunc);
	outfile << "123456789";
	outfile.seekp(3, ios::beg);  // 指针先指向开头,然后向后偏移三个字节
	outfile << "ABC";
	outfile.close();
	return 0;
}

到此这篇关于C++ IO设备读写功能实现详解的文章就介绍到这了,更多相关C++ IO设备读写内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++ IO设备读写功能实现详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++ IO设备读写功能实现详解

C++的文件IO(Input,Output)操作就是指对文件进行读写(输入与输出)的操作。输入就是从磁盘上的文件中读取内容到内存中。输出就是将内存中的数据内容输出或者说写入到磁盘的文件中,这篇文章主要介绍了C++ IO设备读写功能实现
2022-11-13

C语言实现文件读写功能流程

这篇文章主要介绍了C语言实现文件读写,文件是一段数据的集合,这些数据可以是有规则的,也可以是无序的集合。在stdio.h有一个非常重要的东西,文件指针,每个文件都会在内存中开辟一块空间,用于存放文件的相关信息
2022-12-30

C语言如何实现BMP图像读写功能

这篇文章给大家分享的是有关C语言如何实现BMP图像读写功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C语言实现BMP图像的读写对于刚接触数字图像的同学,应该都有一个疑问,如何把一个BMP格式的图像用纯C语言读
2023-06-14

基于C#实现员工IC卡的读写功能

这篇文章主要为大家详细介绍了C#如何实现读写员工IC卡的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
2023-01-03

C#实现CSV文件读写的示例详解

这篇文章主要介绍了CsvHelper、TextFieldParser、正则表达式三种解析CSV文件的方法,顺带也会介绍一下CSV文件的写方法,需要的可以参考一下
2023-05-19

PHP文件函数详解:实现文件的读写和操作功能

PHP是一种高性能的脚本语言,广泛用于Web开发。在PHP中,文件操作是一项非常常见而重要的功能。本文将详细介绍PHP中文件函数的使用,以帮助读者实现文件的读写和操作功能。一、文件的打开和关闭在PHP中,打开文件使用的是fopen函数,语法
PHP文件函数详解:实现文件的读写和操作功能
2023-11-20

PHP开发者必备:MySQL读写分离实现方法详解

PHP开发者是在网站开发过程中,经常会面对数据库操作的情况,而MySQL作为非常流行的数据库管理系统,其读写分离是提高网站性能的重要手段之一。在PHP开发中,实现MySQL读写分离可以极大地提升网站的并发访问能力和用户体验。本文将详细介绍M
PHP开发者必备:MySQL读写分离实现方法详解
2024-03-04

C语言实现随机读写文件的函数详解

文件的随机读写,可以在文件中指定的任意位置读或者写。这篇文章主要为大家详细介绍了C语言实现随机读写文件的3个函数,感兴趣的可以了解一下
2023-05-14

C#实现SMTP邮件附件发送功能详解

这篇文章主要为大家详细介绍了如何利用C#实现SMTP邮件附件发送的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
2022-12-28

C#实现图片缩略图功能的示例详解

这篇文章主要为大家详细介绍了如何利用C#实现图片缩略图的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
2022-12-23

C#实现汉字转拼音(多音字)功能详解

这篇文章主要为大家详细介绍了如何利用C#实现汉字转拼音(支持多音字)的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
2023-02-15

C#利用FluentFTP实现FTP上传下载功能详解

FTP作为日常工作学习中,非常重要的一个文件传输存储空间,想必大家都非常的熟悉了,那么如何快速的实现文件的上传下载功能呢,本文以一个简单的小例子,简述如何通过FluentFTP实现文件的上传和下载功能
2023-02-21

详解C#如何实现屏幕放大和取色功能

这篇文章主要为大家详细介绍了如何利用C#实现屏幕放大和取色功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以了解一下
2022-12-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录