C++ freopen 打开txt文件,读取,写入txt文件

需要stdio头

freopen属于输入输出流的重定向,一般我们默认的输入流是在黑黑的控制台,但是我们也可以选择从一个txt文本中读取信息,这和我们键入控制台是一样的,相当于把txt的内容拷贝到控制台

参数

/*
param filePath : 文件路径(string)
param mode	   : 模式 r=读 w=写(string)
param stream   : 重定向到那个流 stdin or stdout
*/
freopen(filePath, mode, stream);

读取txt

现在有一txt文件
在这里插入图片描述
执行以下代码,相当于在控制台输入

3
2 5 8
#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n, x, sum=0;
	freopen("C:/Users/用户名/Desktop/TXT.txt", "r", stdin);
	cin>>n;
	for(int i=0; i<n; i++) {cin>>x; sum+=x;}
	cout<<sum<<endl;
	
	return 0;
}

在这里插入图片描述

写入txt

现有两txt文件
在这里插入图片描述
执行以下代码,从TXT读取输入的数据,将输出的数据写入到TXT2,此时我们的cout不会再输出在控制台上,而是输出在TXT2中

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n, x, sum=0;
	freopen("C:/Users/用户名/Desktop/TXT.txt", "r", stdin);
	freopen("C:/Users/用户名/Desktop/TXT2.txt", "w", stdout);
	cin>>n;
	for(int i=0; i<n; i++) {cin>>x; sum+=x;}
	cout<<sum<<endl;
	
	return 0;
}

在这里插入图片描述

读取,写入同一个文件

值得注意的是,一定要在读取完所有的数据之后,再把输出流重定向到文件中,而且这个操作会覆盖文件里面的值,也就是删除所有的,再输入进去

如果指定的输出流文件不存在,那么会帮你创建一个新的txt文件

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n, x, sum=0;
	freopen("C:/Users/用户名/Desktop/TXT.txt", "r", stdin);
	cin>>n;
	for(int i=0; i<n; i++) {cin>>x; sum+=x;}
	freopen("C:/Users/用户名/Desktop/TXT.txt", "w", stdout);
	cout<<sum<<endl;
	
	return 0;
}

before
在这里插入图片描述
after
在这里插入图片描述

发布了199 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44176696/article/details/104734960