C++ I/O文件读写操作的示例代码分享!

IO: 向设备输入数据和输出数据C++的IO流

C++ I/O文件读写操作的示例代码

c++中,必须通过特定的已经定义好的类, 来处理IO(输入输出)

C++ I/O文件读写操作的示例代码

文件流: 对文件进行读写操作
头文件:
类库:
ifstream 对文件输入(读文件)
ofstream 对文件输出(写文件)
fstream 对文件输入或输出

C++ I/O文件读写操作的示例代码

//写文件

  #include <fstream>  #include <iostream>  #include <string>    using namespace std;    int main()  {  	string name;  	int age;  	ofstream outfile; //也可以使用fstream, 但是fstream的默认打开方式不截断文件长度    	// ofstream的默认打开方式是, 截断式写入 ios::out | ios::trunc  	// fstream的默认打开方式是, 截断式写入  ios::out  	// 建议指定打开方式  	outfile.open("user.txt", ios::out | ios::trunc);    	while (1) {  		cout << "请输入姓名: [ctrl+z退出] ";  		cin >> name;  		if (cin.eof()) { //判断文件是否结束  			break;  		}  		outfile << name << "t";    		cout << "请输入年龄: ";  		cin >> age;   		outfile << age << endl; //文本文件写入  	}    	// 关闭打开的文件  	outfile.close();    	system("pause");  	return 0;  }

//读文件

  #include <fstream>  #include <iostream>  #include <string>    using namespace std;    int main()  {  	string name;  	int age;  	ifstream infile;  	infile.open("user.txt");    	while (1) {  		infile >> name;  		if (infile.eof()) { //判断文件是否结束  			break;  		}  		cout << name << "t";    		infile >> age;  		cout << age << endl;   	}    	// 关闭打开的文件  	infile.close();    	system("pause");  	return 0;  }

对二进制文件流读写

文本文件和二进制文件的区别?

文本文件: 写数字1, 实际写入的是 ‘1′
二进制文件:写数字1, 实际写入的是 整数1(4个字节,最低字节是1, 高3个字节都是0)
写字符‘R’实际输入的还是‘R’
写二进制文件
使用文件流对象的write方法写入二进制数据.

//写二进制文件

  #include <fstream>  #include <iostream>  #include <string>    using namespace std;    int main()  {  	string name;  	int age;  	ofstream outfile;  	outfile.open("user.dat", ios::out | ios::trunc | ios::binary);    	while (1) {  		cout << "请输入姓名: [ctrl+z退出] ";  		cin >> name;  		if (cin.eof()) { //判断文件是否结束  			break;  		}  		outfile << name << "t";    		cout << "请输入年龄: ";  		cin >> age;   		//outfile << age << endl; //会自动转成文本方式写入  		outfile.write((char*)&age, sizeof(age));  	}    	// 关闭打开的文件  	outfile.close();    	system("pause");  	return 0;  }

//读二进制文件

使用文件流对象的read方法.

  #include <fstream>  #include <iostream>  #include <string>    using namespace std;    int main()  {  	string name;  	int age;  	ifstream infile;  	infile.open("user.dat", ios::in | ios::binary);    	while (1) {  		infile >> name;  		if (infile.eof()) { //判断文件是否结束  			break;  		}  		cout << name << "t";  	  		// 跳过中间的制表符  		char tmp;  		infile.read(&tmp, sizeof(tmp));     		//infile >> age; //从文本文件中读取整数, 使用这个方式  		infile.read((char*)&age, sizeof(age));  		cout << age << endl; //文本文件写入  	}    	// 关闭打开的文件  	infile.close();    	system("pause");  	return 0;  }

对文件流按格式读写取数据

使用stringstream

  #include <fstream>  #include <iostream>  #include <string>  #include <sstream>    using namespace std;    int main()  {  	string name;  	int age;  	ofstream outfile;  	outfile.open("user.txt", ios::out | ios::trunc);    	while (1) {  		cout << "请输入姓名: [ctrl+z退出] ";  		cin >> name;  		if (cin.eof()) { //判断文件是否结束  			break;  		}    		cout << "请输入年龄: ";  		cin >> age;  		  		stringstream s;  		s << "name:" << name << "ttage:" << age << endl;  		outfile << s.str();  	}    	// 关闭打开的文件  	outfile.close();    	system("pause");  	return 0;  }

按指定格式读文件

没有优雅的C++解决方案, 使用C语言的sscanf

  #include <fstream>  #include <iostream>  #include <string>  #include <sstream>  #include <Windows.h>    using namespace std;    int main(void)  {  	char name[32];  	int age;  	string line;  	ifstream infile;  	infile.open("user.txt");    	while (1) {  		getline(infile, line);  		if (infile.eof()) { //判断文件是否结束  			break;  		}    		sscanf_s(line.c_str(), "姓名:%s 年龄:%d", name, sizeof(name),&age);  		cout << "姓名:" << name << "tt年龄:" << age << endl;  	}    	infile.close();    	system("pause");  	return 0;  }

文件流的状态检查

s.is_open( )
文件流是否打开成功,

s.eof( ) 流s是否结束

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/485057.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐