C++ 输入错误

c++ input error

本文关键字:错误 输入 C++      更新时间:2023-10-16

在此程序中,在输入过程中,将跳过名称和区域字段。我什至尝试 gets(( 输入字符串(名称(,但它仍然在 emp no 之后跳过名称。在此程序中,在输入过程中,将跳过名称和区域字段。我什至尝试 gets(( 输入字符串(名称(,但它仍然在 emp no 之后跳过名称。

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    struct addr
        {
            int houseno;
            char area[20];
            char city[20];
            char  state[20];
        };
    struct Emp
        {   
            int empno;
            char name[20];
            char desig[10];
            addr address;
            float basic;
        }worker;
    int main()
    {
        cout<<"Employee no: ";
        cin>>worker.empno;
        cout<<"Name: ";
        cin.getline(worker.name,20);
        cout<<"Designation: ";
        cin.getline(worker.desig,10);
        cout<<"Enter Address: "<<endl;
        cout<<"1. House no. :";
        cin>>worker.address.houseno;
        cout<<"2. Area: ";
        cin.getline(worker.address.area,20);
        cout<<"3. City: ";
        cin.getline(worker.address.city,20);
        cout<<"4. State: ";
        cin.getline(worker.address.state,20);
        cout<<"Basic Pay: ";
        cin>>worker.basic;
        cout<<endl;
        return 0;
    }

在获得整数变量的输入后,您应该使用 cin.ignore(( 作为 getline(( 函数。这是您的更正版本

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
struct addr
{
    int houseno;
    char area[20];
    char city[20];
    char  state[20];
};
struct Emp
{
    int empno;
    char name[20];
    char desig[10];
    addr address;
    float basic;
}worker;
int main()
{
    cout << "Employee no: ";
    cin >> worker.empno;
    cin.ignore(); //use it
    cout << "Name: ";
    cin.getline(worker.name, 20);
    cout << "Designation: ";
    cin.getline(worker.desig, 10);
    cout << "Enter Address: " << endl;
    cout << "1. House no. :";
    cin >> worker.address.houseno;
    cin.ignore(); //because houseno is also integer
    cout << "2. Area: ";
    cin.getline(worker.address.area, 20);
    cout << "3. City: ";
    cin.getline(worker.address.city, 20);
    cout << "4. State: ";
    cin.getline(worker.address.state, 20);
    cout << "Basic Pay: ";
    cin >> worker.basic;
    cout << endl;
    return 0;
}