CPP_D7

本文介绍如何使用C++创建一个封装学生类的vector容器,实现将学生对象存储和从文件中读取的功能。包括无参和有参构造函数,以及print和readvector方法的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
编程题:
封装:学生类,并定义 学生这种类のvector容器,  里面存放学生对象(至少3个);
再把该容器中の对象,保存到文件中;
再把这些学生从文件中读取出来,放入另一个容器中并遍历输出该容器里の学生。
*/

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

class Stu  //类(学生)————封装
{
public:  //数据成员 ×2
    string name;
    int id;

public:
    //无参构造()
    Stu(){}
    //有参构造():初始化列表
    Stu(string n, int i) : name(n), id(i)
    {}

    void show()
    {
        cout << "姓名:" << name << "\n" << "学号:" << id << endl;
    }
};

void printvetor(vector<Stu> v) //写入数据 至文件中
{
    ofstream ofs;
    ofs.open("C:/Users/Adam/Desktop/stu.txt", ios::out);
    vector<Stu>::iterator iter;
    for ( iter=v.begin(); iter!=v.end(); iter++ )
    {
        ofs << iter->name  << " " << iter->id << endl; //学生信息 写入至 文件中
    }
    ofs.close(); //关闭:写入对象, 防止:资源常开, 保证:资源安全
}
void readvector()
{
    ifstream ifs; //定义对象:读取文件
    ifs.open("C:/Users/Adam/Desktop/stu.txt", ios::in); //打开文件路径,以读的方式
    char buff[1024]; //缓冲区(1KB)
    while(ifs >> buff) //循环读取
    {
        cout << buff << endl; //读出到buff,再从buff中输出至终端
    }
    ifs.close(); //关闭:读取对象,防止:资源流失造成资源浪费
}

int main()
{
    vector<Stu> S1;//设置:迭代器 来存学生类(动态数组)
    Stu s1("王思聪", 35);//定义类对象S1并初始化
    Stu s2("马云",88);
    Stu s3("马化腾",38);

    //添加:学生信息
    S1.push_back(s1);
    S1.push_back(s2);
    S1.push_back(s3);

    printvetor(S1); //写入
    readvector(); //读取

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值