C++c 如何定义对象数组将对象存储在数组中

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 8611 人关注过本帖
标题:C++ 如何从txt文件中读取数据,然后保存在类的数组中?
等 级:新手上路
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:3&&&
C++ 如何从txt文件中读取数据,然后保存在类的数组中?
比如txt叫&name.txt&,然后内容是:
小明 111 男 FIT
小丽 212 女 FOM
小王 516 男 FOE
小张 426 男 FCM
声明一个类,然后将这些数据保存在类的private成员中。
类的private成员有4 个;
#include &string&
#include &iostream&
#include &algorithm&
#include &vector&
#include &fstream&
class Student
&&& public:
&&& Student(string name, int id, string gender, string faculty);
&&& string getname(){};
&&& string getgender(){};
&&& string getfaculty(){};
&&& int getid(){};
int main()
&&&&&&&&ifstream in(&name.txt&);
&&&&&&&&vector&string&
&&&&&&&&while(getline(in, name, '\n'))
&&&&&&&&vect.push_back(name.substr(0, name.find(' ')));
&&&&&&&&vector&string&::iterator it=unique(vect.begin(), vect.end());
&&&&&&&&copy(vect.begin(), it, ostream_iterator&string&(cout, &\n&));
&&&&&&&&return 0;
应该要怎样继续??
搜索更多相关主题的帖子:
&&&&&&&&&&
等 级:版主
威 望:200
帖 子:4774
专家分:25905
&&得分:10&
程序代码:#include &string&
#include &iostream&
class Student
&&& friend std::istream& operator&&( std::istream& is, Student& s );
&&& friend std::ostream& operator&&( std::ostream& os, const Student& s );
&&& Student() : id(-<font color=#)
&&& Student( const std::string& name_, int id_, char gender_, const std::string& faculty_ ) : name(name_), id(id_), gender(gender_), faculty(faculty_)
&&& std::string getname() const { return }
&&& int getid() const { return }
&&& char getgender() const { return }
&&& std::string getfaculty() const { return }
&&& std::string
&&& std::string
std::istream& operator&&( std::istream& is, Student& s )
&&& std::string
&&& std::string
&&& std::string
&&& is && name && id && gender &&
&&& if( is )
&&&&&&&&s.name =
&&&&&&&&s.id =
&&&&&&&&s.gender = (gender==&男&?'M':'F');
&&&&&&&&s.faculty =
&&& return
std::ostream& operator&&( std::ostream& os, const Student& s )
&&& os && s.name && ' '
&&&&&&&&&& s.id && ' '
&&&&&&&&&& (s.gender=='M'?&男&:&女&) && ' '
&&&&&&&&&& s.
&&& return
#include &algorithm&
#include &vector&
#include &fstream&
#include &iterator&
using namespace
int main()
&&& ifstream in(&name.txt&);
&&& if( in )
&&&&&&&&vector&Student& S
&&&&&&&&copy( istream_iterator&Student&(in), istream_iterator&Student&(), back_inserter(Students) );
&&&&&&&&copy( Students.begin(), Students.end(), ostream_iterator&Student&(cout,&\n&) );
&&& return <font color=#;
等 级:贵宾
威 望:13
帖 子:302
专家分:972
&&得分:10&
以下是引用syahkrin在 21:42:42的发言:
比如txt叫&name.txt&,然后内容是:
小明 111 男 FIT
小丽 212 女 FOM
小王 516 男 FOE
小张 426 男 FCM
声明一个类,然后将这些数据保存在类的private成员中。
类的private成员有4 个;
class Student
&&& public:
&&& Student(string name, int id, string gender, string faculty);
&&& string getname(){};
&&& string getgender(){};
&&& string getfaculty(){};
&&& int getid(){};
int main()
&&&&&&&&ifstream in(&name.txt&);
&&&&&&&&while(getline(in, name, '\n'))
&&&&&&&&vect.push_back(name.substr(0, name.find(' ')));
&&&&&&&&vector::iterator it=unique(vect.begin(), vect.end());
&&&&&&&&copy(vect.begin(), it, ostream_iterator(cout, &\n&));
&&&&&&&&return 0;
应该要怎样继续??先按行把文件内容读到vector中,然后解析vector的内容赋值到你想要赋值的地方
我的群: C/C++/Assembly 喜欢交流的朋友进,进群请写消息
等 级:新手上路
回复 3楼 BianChengNan
试过了,还是不行。。只能显示数据,不能够使用数据。。
版权所有,并保留所有权利。
Powered by , Processed in 0.162107 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。2201人阅读
类是对象的抽象,我们可以使用一个类来定义很多的对象,然后每个对象都有自己的属性。
当我们使用类来定义很多相同结构的对象的时候,我们可以采取对象数组的方法。
例如,一个班有50个学生,我们定义了一个学生类,该类的学生具有相同的数据成员和成员函数,我们就可以定义一个这样的数组。
Student stdu[50];//假设已经声明了Student类,定义stud数组,有50个元素======================对象数组的初始化=========================
在建立数组时,同样要调用构造函数。如果有50个元素,就需要调用50次构造函数。在需要的时候,可以在定义数组时提供实参以实现初始化。
如果构造函数只有一个参数可以这样初始化:
Studet stud[3]={60,70,80};//三个实参分别传递给3个数组元素的构造函数如果构造函数有多个参数时,应该这样做:
Student stud[3]={//假设构造函数有3个参数
Student(10,20,30),//调用第一个元素的构造函数,提供3个实参
Student(40,50,60),//调用第二个元素的构造函数,提供3个实参
Student(70,80,90) //调用第三个元素的构造函数,提供3个实参
};在建立对象数组时,分别调用构造函数,对每个元素初始化。每一个元素的实参分别用括号括起来,对应构造函数的一组形参。
===================一个对象数组的例子=================
要求:建立一个对象数组,内放5个学生的数据(学号,成绩),设立一个函数max,在max函数中找出5个学生中成绩最高者,并出输出结果。
#include &iostream&
class Student
number = 0;
score = 0;
Student(unsigned int n, unsigned int s)
unsigned int get_score()
void print()
cout && number && &\t& && score &&
Student max_score(Student stu[])
int i = 0;
Student maxScore = stu[0];
for(i=1; i&5; ++i)
if(maxScore.get_score() & stu[i].get_score())
maxScore = stu[i];
return maxS
int main()
Student stu[5]=
Student(1, 65),
Student(2, 45),
Student(3, 95),
Student(4, 85),
Student(5, 75)
int i = 0;
for(i=0; i&5; ++i)
stu[i].print();
p = max_score(stu);
cout && &======max score=======\n&;
p.print();
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6430次
排名:千里之外
原创:11篇
(8)(1)(4)(3)1073人阅读
C/C++(36)
C++的对象数组:
顾名思义,即是存储对象的数组。比如有一个对象student,实例化为对象数组有如下两种方式:
student stu[3];
student *stu = new student[3];
对象数组调用构造函数:
class student
student(string name, int age)
stu_name =
string stu_
int main()
student stu1[3] = student("小明",12);
student stu2[3] = {student("小明",12),student("小王",13),student("小李",14)};
student *stu3[3];
for(int i = 0; i & 3; i++)
stu3[i] = new student("小明",12);
调用析构函数:
在对象stu1和stu2这两个对象数组中是不需要释放内存的,栈空间的内存系统自动释放,所以在析构函数中并不需要写什么;但是在堆空间中,由于使用了new操作符来申请内存,所以需要程序员手动释放。紧接着上面的代码,如下:
for(int i = 0; i & 3; i++)
delete stu3[i];
如果构造函数里面没有传任何参数,那么使用new操作符可以进行如下不同于上面的实例化对象和释放内存操作
student *stu4 = new student[3];
delete []stu4;
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:27689次
积分:1230
积分:1230
排名:千里之外
原创:95篇
(8)(1)(11)(9)(4)(4)(31)(17)(11)(6)(2)(1)

我要回帖

更多关于 数组存储对象 的文章

 

随机推荐