C++在输入字符串时多输入字符导致输入流覆

本文介绍了如何在C++中处理用户输入字符串时,如果输入了多余字符,如何通过使用`cin.ignore()`函数来丢弃多余的输入,防止其覆盖接下来的输入。示例代码展示了在读取学生信息时,如何正确处理年龄、姓名和学校等字段的输入,确保输入流的正确性。在Linux系统中,需要注意中文字符可能占用多个字节的情况。
摘要由CSDN通过智能技术生成

 解决C++在输入字符串时多输入字符导致输入流覆盖接下来的输入

  在需要丢弃的输入流处加入一下代码

 

cin.ignore();
cin.ignore(numeric_limits<streamsize>::max(), '\n');

需要在头文件中导入
#include<limits>
#include <iostream>
#include <limits>
#include <cstring>
using namespace std;
struct student{
    int age;
    char name[10];
    string school;
};
int main()
{    student stu;
    student *p=new student;
    //enter value 
    cout<<"before enter the sizeof is :"<<sizeof stu<<endl;
    cout<<"enter stu age: ";
    cin>>stu.age;
    cin.get(); //回车符                                                      
    cout<<"enteer stu name: ";
    cin.get(stu.name,10);
    cin.ignore();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout<<"enter stu school: ";
    getline(cin,stu.school);
          
    cout<<"after enter the sizeof is :"<<sizeof stu<<endl;
    //指针
    p=&stu;
    cout<<p->age<<" "<<p->name<<" "<<p->school<<endl;
    cout<<stu.age<<" "<<stu.name<<" "<<stu.school<<endl;
    return 0;
}

注意 在linux系统下中文字符默认是占用三个字符的。

我的资源中有c++相关辅导书籍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值