VScode

//添加联系人

void addperson(addressbooks * abs)

{

//先判断通讯录存储人员个数,如果添加人满,则无法添加

if(abs->add_num == max)

{

cout << "存储人数已满,无法添加 " << endl;

}

else

{

//姓名

string name;

cout << "请输入姓名: " << endl;

cin >> name;

abs->personarray[abs->add_num].name = name;

//性别

int sex;

cout << "请输入性别: " << endl;

cout << "1 ---- 男" << endl;

cout << "2 ---- 女" << endl;

//先收集用户输入的数字,1代表男,2代表女,如果输入为1或2则存入通讯录中,否则提示输入有误重新输入

while(1)

{

cin >> sex;

if(sex == 1 || sex == 2)

{ //???不明白前面还通过指针来访问后面又通过.来访问数据

abs->personarray[abs->add_num].p_sex = sex;

break;

}

cout << "输入有误,请重新输入!" << endl;

}

}

//年龄

int age;

cout << "请输入年龄: " << endl;

cin >> age;

abs->personarray[abs->add_num].age = age;

//电话

cout << "请输入电话号码: " << endl;

string phone;

cin >> phone;

abs->personarray[abs->add_num].telephone = phone;

//家庭住址

cout << "请输入家庭住址: " << endl;

string address;

cin >> address;

abs->personarray[abs->add_num].address = address;

abs->add_num++;//每记录一个人的信息就加1

cout << "添加成功!" << endl;

cout << "Press Enter to continue...";

cin.ignore(); // 等待用户按下回车键

//system("pause");

//system("cls");//清屏

cout << "\033c" << endl;

}

在跟黑马学习到通讯录管理系统时,添加联系人时每次输出到添加成功就会无视下面的请按回车键继续这行代码而继续弹出通讯录菜单。

之后查阅chat发现是由于:

这个问题可能是由于输入缓冲区中仍然存在换行符导致的。在你输入年龄、电话号码和家庭住址时,每次输入完后按下回车键,回车键会被读取并放入输入缓冲区。当执行cin.ignore()时,它只会忽略输入缓冲区中的第一个字符,而不是忽略整个回车键。因此,第一个字符被忽略后,回车键仍然存在于输入缓冲区中,下次调用cin.ignore()时会立即读取回车键,导致无法等待用户按下回车键。

为解决这个问题,你可以在调用cin.ignore()之前添加额外的cin.ignore()语句,以清除输入缓冲区中的残留字符,包括回车键。

而导致。

之后更改为

abs->personarray[abs->add_num].address = address;

abs->add_num++;//每记录一个人的信息就加1

cin.ignore();

cout << "添加成功!" << endl;

cout << "Press Enter to continue...";

cin.ignore(); // 等待用户按下回车键

//system("pause");

//system("cls");//清屏

cout << "\033c" << endl;

问题解决!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值