***初次尝试写通讯录,希望大家多多帮助(问题1)

sftk 2004-09-19 09:26:34
我和几个同学比赛写个通讯录(国庆后比试),就是从一个有“添加联系人,按XX查找,删除”等功能,把结果保存到一个记事本中以便下次打开执行。我想尝试用点STL,用面向对象的方法写,但因学艺不精,还是遇到不少困难,希望好心人能解答下。

问题:
我定义了个member类来临时存放联系人的信息。
/////member.h//////////////
class member
{
private:
string name;
long tel_number;
long QQ;
string Email;
public:
member(string _name,long _tel_number,long _QQ,string _Email):
name(_name),tel_number(_tel_number),QQ(_QQ),Email(_Email){}
//我想利用构造函数来初始化联系人信息
..........
}

/////book_input.h///////////////我用它来从记事本中读出数据,放入一个vector中

ifstream input(filename);
vector<member> member_list;

while(!input.eof())
{
///我想每读出一个联系人信息,就push_back进member_list中,即先new一个member,压入member_list后就删除它,我只会member *add_member=new member;但那个member是有构造函数的,又该怎么办呢?
}


希望高手能写出完整的代码,因为我很笨。


...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sftk 2004-09-25
  • 打赏
  • 举报
回复
感谢oldjackyone(老兔子),可惜已经结铁
Wolf0403 2004-09-25
  • 打赏
  • 举报
回复
void book_open()
{
fstream book("My address book.txt",ios_base::in|ios_base::out);
if(!book)
cerr<<"cannot open input file:"<<filename;

static member buf;

while(!book.eof())
{
book >> buf.name >> buf.tel_number >> buf.QQ >> buf.Email;
member_list.push_back(buf);
delete p;

}

}
Wolf0403 2004-09-25
  • 打赏
  • 举报
回复
static member buf;

while(!book.eof())
{
book >> buf.name >> buf.tel_number >> buf.QQ >> buf.Email;
member_list.push_back(buf);
delete p;

}
oldjackyone 2004-09-22
  • 打赏
  • 举报
回复
#include <string>
#include <vector>

#include <iostream>
#include <fstream>
using namespace std;

const int MEMBER_COUNT = 4;

class member
{
public:
member( string str[] )
{
Name = str[0];
Tel_number = (_int64)str[1].c_str();
QQ = (_int64)str[2].c_str();
Email = str[3];
}
void display()
{
cout << "Name : " << Name.c_str() << " Tel_number : " << Tel_number << " QQ : " << QQ << " Email : " << Email.c_str() << endl;
}
private:
string Name;
_int64 Tel_number;
_int64 QQ;
string Email;
};

void main()
{
vector<member> mem;
ifstream readData("tel.txt",ios::in);
string textline;
vector<string> tempStr;
while( ! readData.eof() )
{
while(getline(readData, textline,'\n'))
{
cout << textline.c_str() << endl;
if( *(textline.c_str()) != 0 )
tempStr.push_back(textline);
}
}
for( vector<string>::iterator iter = tempStr.begin(); iter != tempStr.end(); iter = iter + MEMBER_COUNT )
{
string str[MEMBER_COUNT];
for( int i = 0; i < MEMBER_COUNT; i++ )
{
str[i] = (*iter).c_str();
}
mem.push_back(str);
}

for( vector<member>::iterator iter = mem.begin(); iter != mem.end(); iter++ )
(*iter).display();

system("pause");
}

文本格式:


oldjacky
05147177005
48327206
oldjacky@msn.com

oldjack
05147177005
48327206
oldjacky@msn.com

oldjac
05147177005
48327206
oldjacky@msn.com

oldja
05147177005
48327206
oldjacky@msn.com

oldj
05147177005
48327206
oldjacky@msn.com

你个死家伙,不知道死哪去了,我帮你写了一个,你又不见了。。。kao.

sftk 2004-09-20
  • 打赏
  • 举报
回复
感谢 goodboy1881(三井),结贴
hetianxu 2004-09-19
  • 打赏
  • 举报
回复
同意上面
积木 2004-09-19
  • 打赏
  • 举报
回复
象你那么写就是很麻烦的代码,为什么不这么写,把拷贝构造函数都写上,然后

vector<vector<member> member_list;r> member_list;

member_list.push_back(member(data));
这么做不是很好的一种方法吗?
根本不用那么繁琐的new,然后还得自己管理那些资源
sftk 2004-09-19
  • 打赏
  • 举报
回复
我不打算现在去学VC,先把C++学好吧,这个程序很简单,不需要数据库,STL足以,只是我刚学
o1n 2004-09-19
  • 打赏
  • 举报
回复
我只用VB写个通讯录。
建议楼主看看有关VC数据库相关知识,做起来或许更好些。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧