C++程序设计文件输入和输出

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

C++程序设计文件输入和输出

1. 文本输入和输出
可以通过文本编辑器查看文本文件的内容

1.1向文件写入数据
	可以用ofstream类向一个文本文件中写入基本数据类型值,数组,字符串和对象
#include <iostream>
#include <fstream>//头文件
using namespace std;

int main(){
	ofstream output;//创建文件对象output
	output.open("scores.txt");//如果文件已存在,会删除,不会报错
	//以上两句可以写成ofstream output("sores.txt");
	//写入两行文件
	output << "ZhangSan" << " " << "Z" << " " << "S" << " " << "15" << endl;
	output << "LiSi" << " " << "L" << " " << "S" << " " << "18" << endl;
	//关闭输出流
	output.close();//如果不调用此函数,数据不会真的写入磁盘
	cout << "Done" << endl;
	return 0;
	//反斜线需要“\\”,(转义字符的使用)
 }
1.2从文件读取数据
#include <iostream>
#include <fstream>//头文件
#include <string>
using namespace std;

int main(){
	ifstream input("scores.txt");//输入流对象,等价于
									//ifstream input;
									//input.open("scores.txt");
	//读取数据
	string firstName;
	char mi;
	string lastName;
	int score;
	input >> firstName >> mi >> lastName >> score;
	cout << firstName << " " << mi << " " << lastName << " " << score << " " << endl;
	input >> firstName >> mi >> lastName >> score;
	cout << firstName << " " << mi << " " << lastName << " " << score << " " << endl;

	input.close();
	cout << "Done" << endl
	return 0;
	//为了正确读写数据,要精确了解数据存储方式
 }
1.3检测文件是否存在
	检查文件是否存在,使用fail()函数,如果返回true,则不存在
	`input.fail();`
1.4检测文件结束
	调用eof()函数检测文件末尾
ifstream input("scores.txt");

double sum = 0;
double number;
while(!input.eof()){
	input >> number;
	if(input.eof()) break;//防止最后的数字后面有额外的字符,是程序不能正常工作
	cout <<number << " " ;
	sum += number;
}
1.5让用户输入文件名
	有些编译器的open函数参数是c字符串,所以需要string.c_str()函数可将string转换为c_string

2. 格式化输出
流控制符可用于格式化控制台及文件输出

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

int main(){
	ofstream output;
	output.open("formattedscores.txt");
	
	output << setw(6) << "ZhangSan" << setw(2) << "Z" << setw(6) << "S" << " " << setw(4) << "15" << endl;
	output << setw(6) << "LiSi" << setw(2) << "L" << setw(6) << "S" << " " << setw(4) << "18" << endl;
	//关闭输出流
	output.close();
	cout << "Done" << endl;
	return 0;
	//反斜线需要“\\”,(转义字符的使用)
 }

3. 函数getline,get,put
函数getline可用来读入包含空格的字符串,函数get/put可用来读写单个字符

getline(ifstream& input,int string s ,char delimitChar)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

//将New York#New Mexico
//#Texas#Indiana
int mian(){
	ifstream input("state.txt");
	if(input.fail())
	{
		cout << "File does not exist" << endl;
		return 0;
	}
	
	string city;
	 while(!input.eof()){
		getline(input,city,'#');
		cou << city << endl;
	}
	input.close();
	cout << "Done" << endl;
	return 0;
}
//输出每个单词
//get和put的用法
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

//将New York#New Mexico
//#Texas#Indiana
int mian(){
	
	cout << "请输入被复制文件路径" << endl;
	string inputFilename;
	cin >> inputFilename;
	cout << "请输入复制文件路径" << endl;
	string outputFilename;
	cin >> outputFilename;

	ifstream input(inputFilename.c_str());
	otstream output(outputFilename.c_str());
	ifstream input("state.txt");
	if(input.fail())
	{
		cout << "File does not exist" << endl;
		return 0;
	}
	
	char ch = input.get();
	 while(!input.eof()){
		output.put(ch);
		ch = input.get();
	}
	input.close();
	output.close();
	cout << "\nCopy Done" << endl;
	return 0;
}

4. fstream和文件打开模式
使用fstream创建既能输入又能输出的文件对象

//stream.open("city.txt",ios::out | ios::app)//指定多个文件的打开模式
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	fstream inout;
	
	inout.open("city.txt",ios::out);//写入文件

	inout << "Dallas" << " " << "Houston" << " " << "Atlanta" << " " ;
	inout.close();

	inout.open("city.txt",ios::out | ios::app);//追加内容至文件末尾
	
	inout << "Savannah" << " " << "Austin" << " " << "Chicagp" << ;
	inout.close();
	string city;
	inout.open("city.txt",ios::in);//读入文件内容
	while(!inout.eof()){
		inout >> city;
		vcout << city << " ";
		
	}
	inout.close();
	return 0;
}

5. 检测流状态
函数eof(),fail();good();bad();可用来检测流操作的状态

eof,到达文件末尾
fail,操作失败
bad,非法操作
good,操作成功

6. 二进制输入和输出
文件模式ios::binary可用于二进制输入输出方式打开文件
为了读写,所以需要使用write和read函数
write函数

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(){
	fstream binary("temp.dat",ios::out|ios::binary);
	int value =119;
	binary.write(reinterpret_cast<char*>(&value),sizeof(value));//将int型地址转换为char*
	//reinterpret_cast将任意数据类型转换为二进制字节,反之亦然
	binary.close();
	cout << "Done" ;
	return 0;
	

}
read()函数
读和写类似,不过要注意c字符串需要在最后手动加入‘\0’

7. 随机访问文件
随机访问文件时,可用函数seekg()和seekp()移动文件指针到任意位置

seekg用于输入流
	seekg(100,ios::beg)			文件开始第100个字节处
	seekp(-100,ios:end)			文件末尾向后100个字节处
seekp用于输出流
	seekp(42,ios::cur)				当前位置向前移动42个字节
	seekp(-42,ios::cur)				当前位置向后移动42个字节
	seekp(100)							文件第100个字节处
可以使用tellp和tellg函数返回文件指针的当前位置

8. 更新文件
为更新二进制文件,可用组合模式 ios::in | ios::out | ios::binary 打开该文件

就是  输入+输出 = 更新
C++输入输出文件操作 输入输出 阅读详情

相关推荐

认识c++,掌握输入输出

以上就是C++程序的框架,在return 0上面写上不同功能的命令,就会组成不同功能的程序。我们来详细介绍下框架每行代码的含义:#include<iostream>这行代码让电脑知道我们要使用一些功能,比如显示文字读取输入。就像你要做饭,需要先准备厨具,就是告诉电脑“我要使用一些工具来处理输入输出了!c++标准命名空间std,避免命名重复;int main():主函数,就像我们写故事,故事从哪开始呢,就从这个主函数开始。

weixin_53595899的博客 646

编写一个程序,输出该文本文件中含有的单词总数,分析一个文本文件(英文文章)中 各个词出现的频率,输出该文本文件中所有单词的列表,并与出现次数一起打印出来

编写一个程序,分析一个文本文件(英文文章)中 各个词出现的频率,打印出来。文本文件为D:\test.txt ,输出该文本文件中含有的单词总数,分析一个文本文件(英文文章)中 各个词出现的频率,输出该文本文件中所有单词的列表,并与出现次数一起打印出来

C++文件重定向与文件读写操作

默认输人输出方式都是标准输入输出(stdin,stdout):弹出一个窗口,手动输人内容然后程序运行后,会在同一个窗口输出运行结果。大多数 Online Judge 都是使用这种方式对程序进行评判的。但是许多程序设计竞赛(比如 NOI 系列比赛)要求使用文件输入输出。这种输出方式可以将硬盘上的文件调入程序,程序运算后生成另外一个文件

hls0611的博客 932

C++文件输入输出(fstream)简介

C++编程中,文件输入输出是一项非常常见重要的操作。C++标准库提供了``头文件,其中包含了用于文件输入输出的相关类函数。本文将详细介绍``头文件的使用方法,包括函数原型、打开文件、读取写入文件、以及错误处理等注意事项。

weixin_72668830的博客 1万+

C++文件输入输出

C++文件输入输出

m0_67334604的博客 3728

c++输入输出文件操作stream

c++程序把输入输出看作字节流。输入时,程序从输入流中抽取字节:输出时,程序将字节流插入到输出流中。一般输入输出都有缓冲区。C++程序通常在用户按下回车键时刷新输入缓冲区。cin: 标准输入流cout: 标准输出流如果输出被重定向到文件,则标准错误流依然会被输出到屏幕cerr: 标准错误流,无缓冲区clog: 标准错误流,有缓冲区coutostream类将输出转化为字符字节流put() 显示字符write() 显示字符串将val内存中的数据作为字节字符输出到屏幕输出缓冲区。

surfaceyan的博客 3100

C++ 读取文本文件(文件输入/输出)

对于文件输入C++使用类似于cout的东西 1.必须包含头文件iostream、fstream 2.需要声明一个或者多个ofstream变量,并为他命名 3.使用完文件后 要用close()将其关闭 4.可以结合ofstream对象运算符

dahulihuli的博客 1万+

C++ 程序设计入门(下)- 第 7 单元 - 文件输入输出

介绍输入输出的类练习 C++中用于文件输入输出的头文件包括 ifstream ofstream stdio fstream 关于 cin cout 说法正确的有 A. cin 与 cout 都是类 B. cin 是一个 istream 类的对象 C. cout 是一个 ostream 类的对象 D. cin cout 都是 ios 类的对象 ifstream 类与 ofstream 类中

D. Qiu的专栏 2265

linux 后台程序 cout输入文件,C++ 程序设计入门(下)- 第 7 单元 - 文件输入输出...

介绍输入输出的类练习C++中用于文件输入输出的头文件包括ifstreamofstreamstdiofstream关于 cin cout 说法正确的有A. cin 与 cout 都是类B. cin 是一个 istream 类的对象C. cout 是一个 ostream 类的对象D. cin cout 都是 ios 类的对象ifstream 类与 ofstream 类中均有一个 filebuf...

weixin_35797900的博客 477

输入输出 文件读写 知识点总结 C++程序设计与算法笔记总结(六) 北京大学 郭炜

以上这些类都是基于标准输入输出流 std::stream 的派生类,使用这些类的时候需要包含 头文件。在使用这些类时,通常需要注意打开关闭文件、读写字符或字符串的方式等操作。同时,需要注意数据的编码方式,例如 ASCII 码 Unicode 码等,以确保数据的正确读写传输。

shaozheng0503的博客 605

蓝桥杯CTF逆向题避坑指南:以2024年RC4与XXTEA题为例,聊聊那些容易被忽略的细节

本文以2024年蓝桥杯CTF逆向真题中的RC4与XXTEA算法为例,深入剖析逆向工程中容易被忽略的关键细节,包括内存dump验证、脚本解密误区、大小端序处理等,帮助参赛者避免常见错误,提升解题效率与准确性。

weixin_30652491的博客 413

c 语言执行条件编译时 错误的是,C程序设计试题及答案

C++程序设计试题一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。++源程序文件扩展名为( A )A..cppB..hC..1ibD..obj2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是( B )3.包含自定义头文件的预处理指令是( D )A.#define<...

weixin_39914938的博客 168

中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出模板 笔记 之 文件读写(一)

第七周 输入输出模板 1.输入输出流相关的类 2.用流操纵算子控制输出格式 3.文件读写(一) 4.文件读写(二) 5.函数模板 6.类模板 7.类模板与派生、友元静态成员变量 3.文件读写(一) 文件流是一回事,可以将顺序文件看作一个有限字符构成的顺序字符流,然后像对cin, cout 一样的读写。回顾一下输入输出流类的结构层次: istream是用于输入的流类,cin就是该类的对象。 ...

weixin_41919587的博客 356

C++程序设计POJ》《WEEK7 输入输出模板》《二进制文件读写》《模板》《类模板与派生》...

二进制读文件 ifstream fstream 读 ofstream fstream 写 inFile.gcount();//看刚才读了多少个字节 比如快到文件末尾,如果最后只剩8个字节,却要读10个字节,最后只会读8个字节 fstream东西比较全 ‘\0’ 为什么存成.dat格式?比纯文本节省空间,空格也占空间,纯文本是字符串格式 10亿,10个字节,.dat 一个int 4...

weixin_30256505的博客 106

c++ 从入门到入土01——代码框架输出文本

这些教程是一位蒟蒻写给其它蒟蒻的,可能会有一些错误,请大佬们发现后在评论区留言 C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承多态为特点的面向对象的程序设计C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。 C++不仅拥有计算机高效运行的实用性特征,同时还...

Wonderful_Answer的博客 1620

中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出模板 笔记 之 文件读写(二)

第七周 输入输出模板 1.输入输出流相关的类 2.用流操纵算子控制输出格式 3.文件读写(一) 4.文件读写(二) 5.函数模板 6.类模板 7.类模板与派生、友元静态成员变量 4.文件读写(二) 二进制文件读写 二进制读文件: ifstream fstream的成员函数:istream& read (char* s, long n); 将文件读指针指向的地方的n个字节内容,读...

weixin_41919587的博客 273

C++面向对象程序设计(第2版)第七章(输入输出流)知识点总结

C++面向对象程序设计

生活总是来来往往 千万别等来日方长 513

C++程序设计【一】之 C++ 语言简介

感谢内容提供者:金牛区吴迪软件开发工作室 文章目录第一章:C++ 语言简介一、C++ 语言的发展简史二、C++ 语言的特点1.与C语言相比,C++语言的优点2.基本的输入 / 输出3.头文件命名空间4.强制类型转换运算符5.函数参数的默认值6.引用函数参数的传递7.const 与指针共同使用8.内联函数9.函数的重载10.指针动态内存分配11.用string对象处理字符串三、C++ 语言的程序结构 第一章:C++ 语言简介 一、C++ 语言的发展简史 二、C++ 语言的特点 1.与C语言相比,.

吴小迪的博客 5296

C++程序设计(二:机器模拟)

任务 2 编写一个模拟 MASSEY 机器的 C++ 程序。程序必须接收表单中的输入由 MASSEY 机器代码指令组成的文本文件。然后你的程序模拟机器运行,即它通过机器代码指令(以正确的顺序)改变根据需要设置寄存器内存位置的值。您必须设计适当的输出以帮助机器代码程序员查看机器代码指令发生了什么。你应该显示项目,例如程序计数器、指令寄存器、最近更改的寄存器的值,以及最近更改的内存位置的值。确保您通读以下所有部分。 Section A - input 程序的输入是一个包含 MASSEY 机器代码程序的文本文件

weixin_42455006的博客 2253
上一篇: C++程序设计模板,向量和栈
下一篇: 大三元小笔记
唐_厨
博客等级 码龄8年 0粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值