赞
踩
fstream,ifstream和ofstream是C++标准库中的类,它们用于文件I/O操作。
fstream是一个基类,它同时具有继承自ifstream和ofstream的特征,可以同时进行输入和输出操作。
ifstream是从istream类派生的,专门用于输入文件。它从一个已打开的文件中读取数据,可以读取各种数据类型,包括字符、字符串、整数、浮点数等等。
ofstream是从ostream类派生的,专门用于输出文件。它向一个已打开的文件中写入数据,可以写入各种数据类型,包括字符、字符串、整数、浮点数等等。
使用这些类时,需要包含相应的头文件,例如使用ifstream类需要包含<fstream>头文件。同时,也需要确保打开文件时已经指定了正确的文件路径和文件名。
举个栗子:
- #include "iostream"
- #include <string>
- #include <fstream>
-
- using namespace std;
-
- // 利用ofstream 对文件进行write操作;
- // 定义一个名为 ofstream_files 的函数,该函数接受一个 string 类型的参数 files
- void ofstream_files(string files){
- // 创建一个 ofstream 对象,名为 outf,打开由参数 files 指定的文件,并以输出模式打开(即如果文件存在则清空内容,如果文件不存在则创建新文件)
- std::ofstream outf(files, std::ios::out);
- // 定义一个字符串变量,名为 str,并初始化为 "scores-------------:"
- std::string str = "scores-------------:";
-
- // 检查文件是否成功打开(即 is_open() 函数返回 true)
- if (outf.is_open()) {
- // 如果文件成功打开,则向文件写入一行字符串和两个浮点数(0.9 和 0.8),两者之间以空格分隔,行末添加换行符
- outf << str + " " + std::to_string(0.9) + "\n";
- outf << str + " " + std::to_string(0.8) + "\n";
- // 写入完成后关闭文件
- outf.close();
- } else {
- // 如果文件无法打开(即 is_open() 函数返回 false),则向控制台输出一条消息:"Unable to open file"
- std::cout << "Unable to open file";
- }
- }
-
- // 利用ifstream getline对文件进行read操作;
- // 定义一个名为 ifstream_files_1 的函数,该函数接受一个 string 类型的参数 files
- void ifstream_files_1(string files)
- {
- // 输出消息到控制台,表示此函数开始执行
- cout << "ifstream_1---------------------------" << endl;
-
- // 创建一个 ifstream 对象,名为 inf,打开由参数 files 指定的文件,并以输入模式打开(即只能读取文件,不能写入文件)
- std::ifstream inf(files, std::ios::in);
-
- // 检查文件是否成功打开(即 is_open() 函数返回 true)
- if (inf.is_open())
- {
- // 定义一个字符串变量,用于逐行读取文件内容
- std::string line;
-
- // 使用 getline 函数从文件中逐行读取内容,直到到达文件末尾
- while (std::getline(inf, line)) {
- // 将读取到的每一行内容输出到控制台
- std::cout << line << std::endl;
- }
- // 读取完成后关闭文件
- inf.close();
- }
- }
-
- // 利用ifstream 插入符 对文件进行read操作;
- void ifstream_files_2(string files){
- // 创建一个 ifstream 对象,名为 inf,打开由参数 files 指定的文件,并以输入模式打开(即只能读取文件,不能写入文件)
- std::ifstream inf(files, std::ios::in);
-
- // 输出消息到控制台,表示此函数开始执行
- cout << "ifstream_2---------------------------" << endl;
-
- // 检查文件是否成功打开(即 is_open() 函数返回 true)
- if(inf.is_open()){
- // 循环读取文件直到到达文件末尾
- while(!inf.eof()) {
- // 声明一个字符串变量 s
- // int v;
- string s;
- // 从文件中读取一个字符串到s变量中
- inf >> s;
- // 将 s 变量的内容输出到控制台
- std::cout << s << endl;
- }
- }
-
- // 读取完成后关闭文件
- inf.close();
- }
-
- void fstream_pro(string exam_file)
- {
- std::fstream file(exam_file, std::ios::in | std::ios::out); // 以输入/输出方式打开文件
- std::string line;
- if (!file.is_open()){
- cout << "failed";
-
- }
- while (std::getline(file, line)) { // 逐行读取
- std::cout << line << "read line over\n"; // 输出每一行
- // string str = "read over!";
- //
- }
- file.close(); // 关闭文件
-
- std::fstream sfile(exam_file, std::ios::app); // 以输入/输出方式打开文件
-
- sfile << "read" << endl; // 写入字符串到文件
- sfile << "over" << endl; // 写入字符串到文件
-
- sfile.close(); // 关闭文件
- }
-
- int main()
- {
- //对example.txt 文件进行操作
- string file = "./exam.txt";
- // ofstream
- ofstream_files(file);
-
- // // ifstream
- ifstream_files_1(file);
- ifstream_files_2(file);
- // fstream
- fstream_pro(file);
- return 0;
- }
水平有限,有问题随时交流;
欢迎一键三连!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。