




封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个)
再把该容器中的对象,保存到文件中。
再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。
- #include
- #include
- #include
- using namespace std;
- class Stu
- {
- private:
- string name;
- int id;
- public:
- //无参构造函数
- Stu() {}
- //有参构造函数
- Stu(string n, int i):name(n),id(i){}
- string getname()
- {
- return name;
- }
- int getid()
- {
- return id;
- }
- };
- int main()
- {
- Stu s1("张三",1001);
- Stu s2("李四",1002);
- Stu s3("王五",1003);
- Stu s4("赵六",1004);
- Stu s5("小明",1005);
- vector
v;//无参构造函数 - v.push_back(s1);//尾插
- v.push_back(s2);
- v.push_back(s3);
- v.push_back(s4);
- v.push_back(s5);
-
- //创建一个流对象
- ofstream osf;
- //以写的方式打开文件
- osf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::out);
- //写入数据
- for(int i=0;i<5;i++)
- {
- osf << v.at(i).getname() << " " << v.at(i).getid() << endl;
- }
- //关闭文件
- osf.close();
-
- //创建一个流对象
- ifstream isf;
- //以读的方式打开文件
- isf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::in);
- //读取数据
- //创建一个新的容器存放读取到的数据
- vector
stu; - string buf;//将从文件中的数据暂存到buf中
- while(getline(isf,buf))//当读不到数据时退出循环
- {
- isf >> buf;//从文件中读取
- stu.push_back(buf);//写入到容器中
- }
- for(int i=0;i
size();i++) - {
- cout << stu.at(i);
- cout << endl;
- }
- //关闭文件
- isf.close();
-
- return 0;
- }
- #include
- #include
- #include
- using namespace std;
- class Stu
- {
- private:
- string name;
- int id;
- public:
- //无参构造函数
- Stu() {}
- //有参构造函数
- Stu(string n, int i):name(n),id(i){}
- string getname()
- {
- return name;
- }
- int getid()
- {
- return id;
- }
- };
- int main()
- {
- Stu s1("张三",1001);
- Stu s2("李四",1002);
- Stu s3("王五",1003);
- Stu s4("赵六",1004);
- Stu s5("小明",1005);
- vector
v;//无参构造函数 - v.push_back(s1);//尾插
- v.push_back(s2);
- v.push_back(s3);
- v.push_back(s4);
- v.push_back(s5);
-
- //创建一个流对象
- ofstream osf;
- //以写的方式打开文件
- osf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::out);
- //写入数据
- for(int i=0;i<5;i++)
- {
- osf << v.at(i).getname() << " " << v.at(i).getid() << endl;
- }
- //关闭文件
- osf.close();
-
- //创建一个流对象
- ifstream isf;
- //以读的方式打开文件
- isf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::in);
- //读取数据
- //创建一个新的容器存放读取到的数据
- vector
stu; - string buf;//将从文件中的数据暂存到buf中
- while(getline(isf,buf))//使用getline函数从文件流isf中逐行读取数据,并将每一行的内容存储在字符串变量buf中
- {
- string name = buf.substr(0,buf.length()-4);//使用substr函数从读取到的每一行中提取出姓名部分。line.length() - 4表示从当前行的开头截取到倒数第4个字符之前,剩下的部分即为姓名。
- int id = atoi(buf.substr(buf.length()-4).c_str());//使用substr函数和atoi函数从读取到的每一行中提取出学号部分。line.length() - 4表示从当前行的末尾4个字符开始截取,剩下的部分即为学号。atoi函数将提取到的学号转换为整数。
-
- Stu s(name,id);//使用从文件中提取得到的姓名和学号实例化一个Stu对象
- stu.push_back(s);//尾插,将创建的学生对象添加到容器v的末尾
- }
- for(int i=0;i
size();i++) - {
- cout << stu[i].getname() << stu[i].getid() << endl;
- }
- //关闭文件
- isf.close();
-
- return 0;
- }