曾經(jīng)做博彩網(wǎng)站代理去除痘痘怎么有效果
一、思維導(dǎo)圖
?
?
二、【試編程】將實(shí)例化類對象寫入容器后,寫入.txt文本中,再重新定義一個(gè)類容器,將.txt中的內(nèi)容讀取出來,輸出到終端
封裝一個(gè)學(xué)生的類,定義一個(gè)學(xué)生這樣類的vector容器, 里面存放學(xué)生對象(至少3個(gè))
再把該容器中的對象,保存到文件中。
再把這些學(xué)生從文件中讀取出來,放入另一個(gè)容器中并且遍歷輸出該容器里的學(xué)生。
方法一(使用string類型的容器讀取)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class Stu
{
private:string name;int id;
public://無參構(gòu)造函數(shù)Stu() {}//有參構(gòu)造函數(shù)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<Stu> v;//無參構(gòu)造函數(shù)v.push_back(s1);//尾插v.push_back(s2);v.push_back(s3);v.push_back(s4);v.push_back(s5);//創(chuàng)建一個(gè)流對象ofstream osf;//以寫的方式打開文件osf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::out);//寫入數(shù)據(jù)for(int i=0;i<5;i++){osf << v.at(i).getname() << " " << v.at(i).getid() << endl;}//關(guān)閉文件osf.close();//創(chuàng)建一個(gè)流對象ifstream isf;//以讀的方式打開文件isf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::in);//讀取數(shù)據(jù)//創(chuàng)建一個(gè)新的容器存放讀取到的數(shù)據(jù)vector<Stu> stu;string buf;//將從文件中的數(shù)據(jù)暫存到buf中while(getline(isf,buf))//當(dāng)讀不到數(shù)據(jù)時(shí)退出循環(huán){isf >> buf;//從文件中讀取stu.push_back(buf);//寫入到容器中}for(int i=0;i<stu.size();i++){cout << stu.at(i);cout << endl;}//關(guān)閉文件isf.close();return 0;
}
方法二(使用類容器讀取)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class Stu
{
private:string name;int id;
public://無參構(gòu)造函數(shù)Stu() {}//有參構(gòu)造函數(shù)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<Stu> v;//無參構(gòu)造函數(shù)v.push_back(s1);//尾插v.push_back(s2);v.push_back(s3);v.push_back(s4);v.push_back(s5);//創(chuàng)建一個(gè)流對象ofstream osf;//以寫的方式打開文件osf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::out);//寫入數(shù)據(jù)for(int i=0;i<5;i++){osf << v.at(i).getname() << " " << v.at(i).getid() << endl;}//關(guān)閉文件osf.close();//創(chuàng)建一個(gè)流對象ifstream isf;//以讀的方式打開文件isf.open("D:/hqyj/QTtxt/day7/stu.txt",ios::in);//讀取數(shù)據(jù)//創(chuàng)建一個(gè)新的容器存放讀取到的數(shù)據(jù)vector<Stu> stu;string buf;//將從文件中的數(shù)據(jù)暫存到buf中while(getline(isf,buf))//使用getline函數(shù)從文件流isf中逐行讀取數(shù)據(jù),并將每一行的內(nèi)容存儲在字符串變量buf中{string name = buf.substr(0,buf.length()-4);//使用substr函數(shù)從讀取到的每一行中提取出姓名部分。line.length() - 4表示從當(dāng)前行的開頭截取到倒數(shù)第4個(gè)字符之前,剩下的部分即為姓名。int id = atoi(buf.substr(buf.length()-4).c_str());//使用substr函數(shù)和atoi函數(shù)從讀取到的每一行中提取出學(xué)號部分。line.length() - 4表示從當(dāng)前行的末尾4個(gè)字符開始截取,剩下的部分即為學(xué)號。atoi函數(shù)將提取到的學(xué)號轉(zhuǎn)換為整數(shù)。Stu s(name,id);//使用從文件中提取得到的姓名和學(xué)號實(shí)例化一個(gè)Stu對象stu.push_back(s);//尾插,將創(chuàng)建的學(xué)生對象添加到容器v的末尾}for(int i=0;i<stu.size();i++){cout << stu[i].getname() << stu[i].getid() << endl;}//關(guān)閉文件isf.close();return 0;
}