asqwdw 2022-09-13 20:16 采纳率: 91.7%
浏览 20
已结题

请教一下各位这个问题的原因是什么

void showMenu()
{
    cout<<setfill('*')<<setw(28)<<"  "<<endl;
    cout<<"*****  1.添加联系人  *****"<<endl;
    cout<<"*****  2.显示联系人  *****"<<endl;
    cout<<"*****  3.删除联系人  *****"<<endl;
    cout<<"*****  4.查找联系人  *****"<<endl;
    cout<<"*****  5.修改联系人  *****"<<endl;
    cout<<"*****  6.清空联系人  *****"<<endl;
    cout<<"*****  0.推出通讯录  *****"<<endl;    
    cout<<"**************************"<<endl;
    
    
};

//联系人结构体 
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<<"通讯录已满"<<endl;
    return ;}
    else
    {
        //添加具体联系人 
        //姓名
        string name;
        cout<<"请输入姓名:"<<endl;
        cin>>name;
        ads->personArray[ads->size].name=name;
        //性别 
        int sex=0;
        cout<<"请输入性别:"<<endl;
        cout<<"1--男"<<endl;
        cout<<"2--女"<<endl;
        
        while(true){
        //如果输入的是1或者2可以推出循环,若有误,重新输入 
        cin>>sex;
        if(sex==1||sex==2){
            ads->personArray[ads->size].sex=sex;
            break;
        }
        cout<<"输入有误,请重新输入"<<endl;}
        //年龄
        cout<<"输入年龄:"<<endl;
        int age=0;
        cin>>age;
         ads->personArray[ads->size].age=age;
        //电话
        cout<<"输入联系电话"<<endl;
        string phone=0;
        cin>>phone;
        ads->personArray[ads->size].pNumber=phone;
        //住址 
        
        cout<<"请输入家庭地址:"<<endl;
        string i=0;
        cin>>i;
        ads->personArray[ads->size].add=i;
        //更新通讯录人数
        ads->size++; 
        
        cout<<"添加成功"<<endl;
        
        system("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
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-09-13 20:33
    关注

    string phone=0;错误,你这等于是将 phone设置为空了。只需要string phone 就可以了。或者 string phone = "";
    后面的 string i=0,也是一样
    string是字符串,不是整数 ,不能初始化等于0的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月21日
  • 已采纳回答 9月13日
  • 创建了问题 9月13日

悬赏问题

  • ¥15 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示