带结构指针数组的getline

时间:2012-02-24 03:29:45

标签: c++ pointers input struct

我必须学习类中的内存管理以及如何使用new运算符动态分配内存。

我有一个结构

struct Course
{
    int courseNumber, creditHours;
    string courseName;
    char grade;
};

我正在尝试使用for循环填充成员变量,但我不确定如何将getlinecourseName一起使用。我能够使用常规cin,但如果类名有空格则无法工作。

以下是我的代码和我尝试过的内容,但是我得到了一个争论错误,即courseArray未定义。

Course* readCourseArray(int &courses)                           //Read Courses
{
    cout<<"\nHow many courses is the student taking?\n";
    cin>>courses;
    const int *sizePTR = &courses;
    Course *coursePTR = new Course[*sizePTR]; 

    for(int count = 0; count < *sizePTR; count++)  //Enter course information
    {
        cout<<"\nEnter student "<<count+1<<"'s course name\n";
        getline(cin,courseArray[count].courseName);
        cout<<"\nEnter student "<<count+1<<"'s course number\n";
        cin>>coursePTR[count].courseNumber;
        cout<<"\nEnter student "<<count+1<<"'s credit hours\n";
        cin>>coursePTR[count].creditHours;
        cout<<"\nEnter student "<<count+1<<"'s grade\n";
        cin>>coursePTR[count].grade;
    }


    return coursePTR;
}

1 个答案:

答案 0 :(得分:3)

指向数组的指针名为coursePTR,而不是courseArray。只需将名称courseArray替换为coursePTR

对于这一行:

const int *sizePTR = &courses;

您不必这样做,您可以直接使用courses(因此,请从您使用的地点*删除所有sizePTR,然后更改sizePTRcourses)。

此外,我希望您记得delete[] readCourseArray :)

的返回值{{1}}