Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c++;_C++_String_Cin_Getline - Fatal编程技术网

C++ 如何在c++;

C++ 如何在c++;,c++,string,cin,getline,C++,String,Cin,Getline,嘿,我在名称之间添加空格时遇到了问题。我使用了getline函数从用户添加名称,另外我使用的是字符串数据类型 以下是代码: void health_clinic:: new_patientdata(health_clinic record[size],int i) { cout<<"\nEnter name :"; getline(cin,record[i].name); cout<<"\nEnter email :

嘿,我在名称之间添加空格时遇到了问题。我使用了getline函数从用户添加名称,另外我使用的是字符串数据类型 以下是代码:

void health_clinic:: new_patientdata(health_clinic record[size],int i)
{
    cout<<"\nEnter name :";
    getline(cin,record[i].name);
    cout<<"\nEnter email : ";
    getline(cin,record[i].email);
    cout<<"Enter phone number :";
    getline(cin,record[i].p_no);
    cout<<"Enter weight in kg :";
    cin>>record[i].weight;
    cout<<"Enter height in meters ";
    cin>>record[i].height;
}  
void health\u clinic::新建患者数据(health\u clinic record[size],int i)
{

cout健康诊所管理患者,患者管理自己的数据

您可以在中运行/签入此代码

代码

#include <iostream>
#include <string>
#include <vector>

class Patient
{
private:
    std::string phoneNumber;
    std::string name;
    std::string email;
    float weight;
    float height;

public:
    void SetName(const std::string &name)
    {
        this->name = name;
    }

    void SetEmail(const std::string &email)
    {
        this->email = email;
    }

    void SetPhoneNumber(const std::string &phoneNumber)
    {
        this->phoneNumber = phoneNumber;
    }

    void SetWeight(const float &weight)
    {
        this->weight = weight;
    }

    void SetHeight(const float &height)
    {
        this->height = height;
    }

    std::string GetName()
    {
        return this->name;
    }

    std::string GetEmail()
    {
        return this->email;
    }

    std::string GetPhoneNumber()
    {
        return this->phoneNumber;
    }

    float GetWeight()
    {
        return this->weight;
    }

    float GetHeight()
    {
        return this->height;
    }

public:
};

class HealtClinic
{
private:
    std::vector<Patient> patients;

public:
    void AddPatient()
    {
        Patient p;
        std::cout << "\nEnter name : ";
        std::string sdata;
        std::getline(std::cin, sdata);
        p.SetName(sdata);

        std::cout << "\nEnter email : ";
        std::getline(std::cin, sdata);
        p.SetEmail(sdata);

        std::cout << "Enter phone number : ";
        std::getline(std::cin, sdata);
        p.SetPhoneNumber(sdata);

        int idata;
        std::cout << "Enter weight in kg : ";
        std::cin >> idata;
        p.SetWeight(idata);

        std::cout << "Enter height in meters: ";
        std::cin >> idata;
        p.SetHeight(idata);

        patients.push_back(p);
    }

    void ShowPatients()
    {
        std::cout << "--- PATIENTS ---" << std::endl;
        for (int i = 0; i < patients.size(); i++)
        {
            std::cout << "--- " << i << std::endl;
            std::cout << "Name: " << patients[i].GetName() << std::endl;
            std::cout << "Email: " << patients[i].GetEmail() << std::endl;
            std::cout << "Phone number: " << patients[i].GetPhoneNumber() << std::endl;
            std::cout << "Weight: " << patients[i].GetWeight() << std::endl;
            std::cout << "Height: " << patients[i].GetHeight() << std::endl;
            std::cout << std::endl;
        }
    }
};

int main()
{
    HealtClinic clinic;
    clinic.AddPatient();
    clinic.ShowPatients();
    return EXIT_SUCCESS;
}

您是否在记录[i]中使用字符串类型变量。名称变量?是sir记录是类的数组对象。类具有名称的字符串属性。类健康诊所{private:string name;string email;string p\u no;float weight;float height;}我的水晶球告诉我,在调用此函数之前,您已经直接从cin中读取了一些内容(可能是字符或数字),但是您忘记了使用
cin.ignore()
来使用
'\n'
,该
结束了以前的输入,而以前的读取没有读取。
Enter name : Joma

Enter email : joma@email.com
Enter phone number : 123456789
Enter weight in kg : 88
Enter height in meters: 1.8
--- PATIENTS ---
--- 0
Name: Joma
Email: joma@email.com
Phone number: 123456789
Weight: 88
Height: 1