首页 > 编程语言 >c++输入输出流对象

c++输入输出流对象

时间:2023-05-16 17:22:36浏览次数:38  
标签:文件 weight 对象 age 输入输出 Dog c++ buf dog1

实验项目名称:输入输出流

一、实验目的

  1. 掌握文本文件和二进制文件的基本访问方法;
  2. 了解一般I/O流和文件流的关系;了解文件与文件流的关系;
  3. 了解文件系统的概念,包括文件指针和关于文件的操作;
  4. 掌握文件类的定义和相关操作的定义、使用方法;
  5. 掌握利用常用函数进行文件的打开、关闭、读写、定位等操作。 

二、实验内容

定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,通过读取文件dog1的状态赋给dog2。分别用文本方式和二进制方式操作文件。

三、实验代码

文本方式

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 #include <fstream>
 6 
 7 class Dog
 8 
 9 {
10 
11 public:
12 
13     int weight;
14 
15     int age;
16 
17     Dog()
18 
19     {
20 
21          age = 0;
22 
23          weight = 0;
24 
25     }
26 
27 };
28 
29 void main()
30 
31 {
32 
33     Dog dog1;
34 
35     dog1.age = 5;
36 
37     dog1.weight = 10;
38 
39     ofstream ofs;
40 
41     ofs.open("dog1.txt", ios::out);
42 
43     ofs << "年龄:" << dog1.age << endl;
44 
45     ofs << "体重:" << dog1.weight << endl;
46 
47     ofs.close();
48 
49     Dog dog2;
50 
51     ifstream ifs;
52 
53     ifs.open("dog1.txt", ios::in);
54 
55          if (!ifs.is_open())
56          {
57                    cout << "文件打开失败" << endl;
58                    return;
59          }
60 
61  
62 
63     ofs.open("dog2.txt", ios::out);
64 
65     char c;
66 
67     while ((c = ifs.get()) != EOF)
68 
69     {
70 
71          ofs << c;
72 
73     }
74 
75     ifs.close();
76 
77     ofs.close();

 

二进制文件

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 #include <fstream>
 6 
 7 class Dog
 8 
 9 {
10 
11 public:
12 
13     int weight;
14 
15     int age;
16 
17     Dog()
18 
19     {
20 
21          age = 0;
22 
23          weight = 0;
24 
25     }
26 
27 };
28 
29 void main()
30 
31 {
32 
33     Dog dog1;
34 
35     dog1.age = 5;
36 
37     dog1.weight = 10;
38 
39     ofstream ofs;
40 
41     ofs.open("dog1.txt", ios::out|ios::binary);
42 
43     ofs << "年龄:" << dog1.age << endl;
44 
45     ofs << "体重:" << dog1.weight << endl;
46 
47     ofs.close();
48 
49     Dog dog2;
50 
51     ifstream ifs;
52 
53     ifs.open("dog1.txt", ios::in|ios::binary);
54 
55         if (!ifs.is_open())
56          {
57                    cout << "文件打开失败" << endl;
58                    return;
59          }
60 
61  
62 
63     ofs.open("dog2.txt", ios::out|ios::binary);
64 
65     char c;
66 
67     while ((c = ifs.get()) != EOF)
68 
69     {
70 
71          ofs << c;
72 
73     }
74 
75     ifs.close();
76 
77     ofs.close();
78 
79 }
80 
81 }

 

四、测试截图

 

 

 

五、心得体会

(1)写文件用ofstream类,读文件用isftream

(2)读文件时,有多种方式可以读取文件中的内容

①char c;

    while ((c = ifs.get()) != EOF)

    {

         cout << c;

}

②string buf;

while(getline(ifs,buf))

{

cout<<buf<<endl;

}

③char buf[1024]={0};

while(ifs.getline(buf,sizeof(buf)))

{

Cout<<buf<<endl;

}

④char buf[1024]={0};

while(ifs>>buf)

{

Cout<<buf<<endl;

}

标签:文件,weight,对象,age,输入输出,Dog,c++,buf,dog1
From: https://www.cnblogs.com/lian369/p/17406254.html

相关文章

  • c++打卡练习(31)
    求两个整数的最大公因数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ intx,y,i,k; cout<<"请输入两个整数"<<endl; cin>>x; cin>>y; if(x<y){ intt; t=x; x=y; y=t; } for(i=y;i>=1;i--){ if(x%i==0&&y%i=......
  • c++打卡练习(30)
    不重复的三位数用1234这四个数组成不重复的三位数,每个数位的数也不同,问都有谁流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,b,c,d; for(a=1;a<=4;a++){ for(b=1;b<=4;b++){ for(c=1;c<=4;c++){ if(a!=b&&a!=c&&b!=c){ cout<<a&......
  • C++ | 运算符重载
    1.运算符重载1.1基本概念函数重载(函数多态)是指用户能够定义多个名称相同但参数列表不同的函数,旨在使用户能够用同名的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。实际上,很多C++(也包括C语......
  • 《c++徒步》vs界面详解
    vs2010字符集:多字节字符集和Unicode字符集是不同的字符集标准,主要区别如下:字符编码范围不同:多字节字符集使用单字节或多个字节来表示字符,编码范围较窄,通常只能表示本地语言的字符集。Unicode字符集则是全球通用的字符编码标准,可以同时表示全球范围内的多种语言字符集。字......
  • C++ 图进阶系列之剖析二分图的染色算法和匈牙利算法
    1.前言二分图又称作二部图或称为偶图,是图论中的一种特殊类型,有广泛的应用场景。什么是二分图?二分图一般指无向图。看待问题要有哲学思想,有二分图也可以是有向图。如果图中所有顶点集合能分成两个独立的子集,且任一子集中的任意顶点之间没有边连接,则称这样的图为二分图。......
  • 编写C++时遇到"undefined reference to `std::cout'"
    今天直接将C语言的配置文件粘贴到了C++的工程里面,代码没有报错但是编译报错后面自己试了一下发现用gcc编译c++的话就会报"undefinedreferenceto`std::cout'"的错误解决方法:用g++重新编译......
  • C/C++ CreateFileMapping 共享内存
    原链接C/C++CreateFileMapping共享内存-lyshark-博客园(cnblogs.com)#include<iostream>#include<Windows.h>usingnamespacestd;intmain(){HANDLEhMap;PINTlpMapAddr;//getfilemapping'shandlehMap=OpenF......
  • http yolov5 tensorrt C++ windows 客户端服务器高性能部署,使用tensorrt推理yolov5模
    httpyolov5tensorrtC++windows客户端服务器高性能部署,使用tensorrt推理yolov5模型,封装成了dll;http服务器,监听指定端口、调用dll加载模型到内存(可同时支持多个模型同时加载并行运行)同时监听指定http指定路径是否有请求,收到请求后解析json数据中数据,从中解析出识别指定模型类......
  • yolov5 yolov5_obb rotate 旋转目标检测 C/C++ 支持同时多相机和多模型
    yolov5yolov5_obbrotate旋转目标检测C/C++支持同时多相机和多模型windowsvs2019封装dll,一个dll,支持同模型多次加载和不同模型同时多次加载,支持mfc,和qt调用,支持批量图片识别,Demo支持图片、视频、文件夹和RTSP流识别。ID:143000668549326309......
  • 如何使用IndexOf方法获取JS对象数组中的索引
    获得数组里某一个对象的索引的最佳方法是什么呢?比如如下场景:varhello={hello:'world',foo:'bar'};varqaz={hello:'stevie',foo:'baz'}varmyArray=[];myArray.push(hello,qaz);现在我想得到hello属性值是stevie的对象的索引。在这个例......