C++面向对象入门:实验四
一、实验目的
-
掌握C++文件流的基本概念和使用方法;
-
学会使用ifstream和ofstream进行文件的读写操作;
-
理解文本文件和二进制文件的区别和操作方式;
-
掌握文件打开模式(如ios::app追加)的应用。
二、实验内容
1.输入并编译程序,运行出结果,并解释每行语句作用。
//读取hello.txt文件中的字符串,写入out.txt中
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
int main(){
ifstream myfile("hello.txt");//创建输入文件流,打开hello.txt文件
char buf[1024]={0};//定义字符缓冲区并初始化为0
cout<<"hello.txt文件的内容是:"<<endl;//输出提示信息
while(myfile>>buf){cout<<buf<<endl;}//逐词读取文件内容并显示
ofstream outfile("out.txt",ios::app);//创建输出文件流
string temp;//定义字符串变量存储每行内容
if(!myfile.is_open()){cout<<"未成功打开文件"<<endl;}//检查文件是否打开成功
while(getline(myfile,temp)){//逐行读取原文件内容
outfile<<temp;//将每行内容写入目标文件
outfile<<endl;}//写入换行符
myfile.close();//关闭输入文件
outfile.close();//关闭输出文件
ifstream outfileread("out.txt");//输出提示信息
cout<<"out.txt文件的内容是:"<<endl;//逐词读取输出文件内容
while(outfileread>>buf){
cout<<buf<<endl;}//显示
return 0;
}
运行结果
hello.txt文件的内容是:
未成功打开文件
out.txt文件的内容是:
2.输入并编译程序,运行出结果,并解释每行语句作用。
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
class car{//定义汽车类
public:
char number[20];//汽车序列号
char type[20];//汽车品牌
int weight;//汽车重量
};
int main(){
//文本文件打开方式设为可读写
FILE *pFile=fopen("a.txt","w");//使用C语言方式打开文件,写入模式
car car1;//创建汽车对象
//char a[10];
cout<<"请输入汽车序列号:"<<endl;
//写入文件中
cin>>car1.number;//读取序列号
fwrite(car1.number,1,strlen(car1.number),pFile);//写入文件
fwrite("\r\n",1,2,pFile);//写入换行符
cout<<"请输入汽车品牌:"<<endl;
cin>>car1.type;//读取品牌
fwrite(car1.type,1,strlen(car1.type),pFile);//写入文件
fwrite("\r\n",1,2,pFile);//写入换行符
cout<<"请输入汽车重量:"<<endl;
cin>>car1.weight;//读取重量
char Tweight[10];//定义字符数组存储转换后的重量
_itoa_s(car1.weight,Tweight,sizeof(Tweight),10);//整数转换为字符串
strcat(Tweight,"斤");//添加单位
fwrite(Tweight,1,strlen(Tweight),pFile);//写入重量信息
fclose(pFile);//关闭文件
ifstream ifs;//创建C++输入文件流
//打开文件,判断是否打开成功
ifs.open("a.txt",ios::in);//以读取模式打开文件
if(!ifs.is_open()){//检查文件是否打开成功
cout<<"文件打开失败!"<<endl;
return 0;}
char buf[1024]={0};//定义读取缓冲区
cout<<"汽车的序列号、品牌、重量分别是:"<<endl;
while(ifs>>buf){//逐词读取文件内容
cout<<buf<<endl;}//显示
return 0;
}
运行结果 参考示例(数值可以自己修改,这里随便写的)
请输入汽车序列号:
12
请输入汽车品牌:
abc
请输入汽车重量:
1500斤
汽车的序列号、品牌、重量分别是:
12
abc
1500斤
- 在文件末尾写入数据:假设mytext.tex文件中已有数据(用记事本打开显示8888)编程实现在其末尾写入1到10的整数,从原来的
8888变为8888 1 2 3 4 5 6 7 8 9 10
#include<iostream>
#include<fstream>
using namespace std;
int main(){
//以追加模式打开文件
ofstream outFile("myfile.txt",ios::app);
//检查文件是否成功打开
if(!outFile){
cout<<"文件打开失败!"<<endl;
return 1;}
//在文件末尾写入1~10的整数
for(int i=1;i<=10;i++){
outFile<<" "<<i;}
//关闭文件
outFile.close();
cout<<"成功在文件末尾写入数据!"<<endl;
return 0;
}
三、实验总结
通过本次实验,我学习了C++文件的输入输出,掌握了文件流的基本操作、理解文件打开、读写、关闭的流程。还理解了不同文件的打开模式,学会使用ios::app追加模式和ios::in读取模式等,让我对C++文件操作有了更全面的认识。
By @哈娜Official(HanaNováčková:https://www.cnblogs.com/hanina-chata/p/19548205)
posted on 2026-01-30 21:04 HanaNováčková 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号