fstream用法总结 C++

在C++中输入输出到指定文件,或者从指定文件中读出数据使用fstream类较为方便。

1.将数据写到磁盘的指定文件中

首先第一步是加头文件#include <fstream>,引入库函数

第二步,声明一个ofstream对象,调用ofstream的成员函数open函数,与指定的文件相关联

第三步,使用<<向文件中写入数据,注意<<操作符已经在库函数里重载过,所以直接调用即可。

最后一步,关闭输出流,调用close()函数

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

int main(){
	ofstream outfile;
	outfile.open("D:\\data.txt");
	outfile<<"随机产生的序列:"<<endl;
	for(int i=0;i<10;i++){
		outfile<<i<<endl;
	}
	outfile.close();
	return 0;
}

在D盘data.txt文件中,应该是这样的效果:


注意,这里的data.txt文件可以提前创建,当然也可以有程序自动创建,也就是说当程序执行到该步时,发现该目录下没有该文件,那么会自动地生成一个文本文件。

在这里有时候会出现这样的问题,当我的代码是这样的:

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

int main(){
	ofstream outfile;
	outfile.open("D:\\data.txt");
	outfile<<"随机产生的序列:"<<endl;
	for(int i=0;i<10;i++){
		outfile<<i<<" ";     //注意这行与上面的区别 
	}
	outfile.close();
	return 0;
}

本意是想将数字横着输出一行,那么到底有没有实现这样的功能呢?

这里要分情况,如果是Dev或者其他比较流行的编译器,是没有任何问题的,效果如下:


但如果是Microsoft visual 6.0这种比较老式的编译器,就会出现这样的情况:


很明显,数字不见了。在此声明,这种情况只会在比较老式的编译器中出现。

原因是要写入的数据在缓冲区内,还没有保存到文本中,解决办法是写完之后刷新一次,调用flush()函数来清空缓冲区。

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

int main(){
	ofstream outfile;
	outfile.open("D:\\data.txt");
	outfile<<"随机产生的序列:"<<endl;
	for(int i=0;i<10;i++){
		outfile<<i<<" ";     //注意这行与上面的区别 
	}
	outfile.flush(); 
	outfile.close();
	return 0;
}
这里需要说明一下原理:

当程序向输出设备中输出数据时,输出的数据先被存放在计算机缓冲区(Buffer)内。当缓冲区存满时,这些数据才真正地输出到输出设备。但是,如果输出的字符序列中出现了endl控制符,那么缓冲区内的所有数据将立即输出到输出设备,而无论缓冲区是否已经存满。因此,endl的作用将光标移动到输出设备中下一行开头处,并且清空缓冲区。
很有可能,出现在程序终止时,并没有输出所有的输出数据的情况。这是因为在程序终止时,缓冲区不一定是满的,所有也就没有将缓冲区的数据写到输出设备。
在C++中,可以使用flush函数来清空缓冲区,即使缓冲区中的数据不是满的。


2.将磁盘文件中的数据读到控制台

原理和写到文件类似,就是一个逆过程。

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

int main(){
	ifstream infile;
	infile.open("D:\\data.txt");
	string str;
	infile >> str;
	cout<<str<<endl;
	infile.close();
	return 0;
}



  • 12
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
C++中的 `fstream` 类提供了文件输入/输出的功能,它是 `ifstream` 和 `ofstream` 类的基类,同时具有它们的功能。以下是 `fstream` 的基本用法: 1. 打开文件:可以使用 `open()` 函数打开一个文件,需要提供文件名和打开模式。例如,要以写入模式打开一个名为 `example.txt` 的文件,可以使用以下代码: ```cpp #include <fstream> std::fstream file; file.open("example.txt", std::ios::out); ``` 在上述代码中,`std::ios::out` 表示以写入模式打开文件。 2. 写入文件:可以使用 `<<` 运算符向文件中写入数据,例如: ```cpp file << "Hello World!" << std::endl; ``` 在上述代码中,`std::endl` 表示换行符。 3. 读取文件:可以使用 `>>` 运算符从文件中读取数据,例如: ```cpp std::string data; file >> data; ``` 在上述代码中,`data` 变量将存储从文件中读取的数据。 4. 关闭文件:在文件操作完成后,应该使用 `close()` 函数关闭文件,例如: ```cpp file.close(); ``` 完整的文件读写示例代码如下: ```cpp #include <iostream> #include <fstream> int main() { std::fstream file; file.open("example.txt", std::ios::out); if (file.is_open()) { file << "Hello World!" << std::endl; file.close(); } else { std::cout << "Error opening file!" << std::endl; } file.open("example.txt", std::ios::in); if (file.is_open()) { std::string data; file >> data; std::cout << "Data read from file: " << data << std::endl; file.close(); } else { std::cout << "Error opening file!" << std::endl; } return 0; } ``` 在上述代码中,我们首先打开一个名为 `example.txt` 的文件,并以写入模式向文件中写入数据。之后,我们关闭文件并打开同一个文件,并以读取模式从文件中读取数据。最后,我们将读取的数据输出到控制台并关闭文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值