void showMenu()
{
cout<'*')<28)<<" "<"***** 1.添加联系人 *****"<"***** 2.显示联系人 *****"<"***** 3.删除联系人 *****"<"***** 4.查找联系人 *****"<"***** 5.修改联系人 *****"<"***** 6.清空联系人 *****"<"***** 0.推出通讯录 *****"<"**************************"<//联系人结构体
struct person
{
string name;
string sex;
int age;
string pNumber;
string add;
};
//通讯录结构体
struct addressbooks
{
struct person personArray[MAX];
int size;
} ;
//1.添加联系人
void addPerson(addressbooks*ads)
{
//判断通讯录是否已满,如果满了就不再添加
if (ads->size==MAX)
{cout<<"通讯录已满"<return ;}
else
{
//添加具体联系人
//姓名
string name;
cout<<"请输入姓名:"<>name;
ads->personArray[ads->size].name=name;
//性别
int sex=0;
cout<<"请输入性别:"<"1--男"<"2--女"<while(true){
//如果输入的是1或者2可以推出循环,若有误,重新输入
cin>>sex;
if(sex==1||sex==2){
ads->personArray[ads->size].sex=sex;
break;
}
cout<<"输入有误,请重新输入"<//年龄
cout<<"输入年龄:"<int age=0;
cin>>age;
ads->personArray[ads->size].age=age;
//电话
cout<<"输入联系电话"<string phone=0;
cin>>phone;
ads->personArray[ads->size].pNumber=phone;
//住址
cout<<"请输入家庭地址:"<string i=0;
cin>>i;
ads->personArray[ads->size].add=i;
//更新通讯录人数
ads->size++;
cout<<"添加成功"<"pause");
system("cls");//清屏
};
} ;
int main(){
//创建通讯录结构体变量
addressbooks ads;
//初始化通讯录中当前人员个数
ads.size=0;
```为什么编译的时侯没有显示错误,运行的时候运行到输入电话号码的时候出错了呢
显示 terminate called after throwing an instance of'std::logic_error' what() : basic_string::_S_construct null not valid
string phone=0;错误,你这等于是将 phone设置为空了。只需要string phone 就可以了。或者 string phone = "";
后面的 string i=0,也是一样
string是字符串,不是整数 ,不能初始化等于0的。
string phone=0;
可能是这句用空指针初始化字符串的问题,直接写string phone;试一试呢,还有后面的i也是