创建一个包含结构对象C ++的数组

时间:2015-08-17 02:19:29

标签: c++ arrays struct

我是一名新手程序员,我正在创建一个包含几个struct类型对象的程序。该程序需要接受用户输入,但我不知道该怎么做。首先,这是我用来定义结构的代码:

struct Apartment{
        int number;
        string owner;
        string condition;
}ap;

以下是我用来询问用户输入的代码:

cout << "Enter the apartment number: " << endl;
cin >> ap.number;
cout << "Enter the name of the owner: " << endl;
cin >> ap.owner;
cout << "Enter the condition: " << endl;
cin >> ap.condition;

apartment building[50] = { ap.number, ap.owner, ap.condition};

最后一行代码是我如何尝试将对象保存在数组中,我不知道它是否有效。 我后来需要打印所有的对象,所以如果你帮助我也会很好。我使用Visual Studio 2013作为编译器,以防它有任何区别。

3 个答案:

答案 0 :(得分:1)

struct Apartment{
    int number;
    string owner;
    string condition;
}ap;

void AddApartment(vector<Apartment> &vtnew)
{
    Apartment building;
    cout << "Enter the apartment number: " << endl;
    cin >> building.number;
    cout << "Enter the name of the owner: " << endl;
    cin >> building.owner;
    cout << "Enter the condition: " << endl;
    cin >> building.condition;
    vtnew.push_back(building);
}

void DisplayApt(vector<Apartment> vtnew)
{
    vector<Apartment> ::iterator it;
    for (it = vtnew.begin(); it != vtnew.end(); it++)
    {
        cout << "apartment number" <<it->number;
        cout << "name of the owner" << it->owner;
        cout << "condition" << it->condition;
    }
}

int main()
{
    vector<Apartment> vt;
    AddApartment(vt);
    AddApartment(vt);
    AddApartment(vt);
    DisplayApt(vt);
    return 0;
}

您在代码中所做的是为公寓申报一个阵列以容纳50套公寓,但是当您使用向量时我们不需要事先计算,我们可以继续添加公寓,而不用担心大小!

答案 1 :(得分:1)

首先,让我们了解你在做什么。

     struct Apartment{
            int number;
            string owner;
            string condition;
    }ap;

首先,创建一个名为&#34; ap&#34;的Apartement结构。

cout << "Enter the apartment number: " << endl;
cin >> ap.number;
cout << "Enter the name of the owner: " << endl;
cin >> ap.owner;
cout << "Enter the condition: " << endl;
cin >> ap.condition;

其次,(我假设您在主要功能中)您要求用户输入一些信息。 你必须记住,如果你计划保存更多的单词,只有第一个单词并且停在它看到的第一个空格,你应该使用getline。有关详细信息,请参阅此链接:http://www.cplusplus.com/doc/tutorial/basic_io/

apartment building[50] = { ap.number, ap.owner, ap.condition};

最后,你的最后一行将崩溃有两个原因。首先,因为类型公寓不存在。我相信你打算写公寓。其次,因为你无法创建这样的数组。我建议你看一下:http://www.cplusplus.com/doc/tutorial/arrays/

我不确定你想要做什么,所以我会给你一个代码样本,询问用户他有多少公寓,并询问他所拥有的公寓数量的信息。

struct Apartment{
            int number;
            string owner;
            string condition;
    };

int main() {
    cout << "Hello, how many apartment do you own?";
    int nbAppt = 0;
    cin >> nbAppt;
    Apartment appt[nbAppt];
    for(int i = 0; i < nbAppt; i++) {
        cout << "Appartment number " << i << endl;
        cout << "Enter the apartment number: ";
        cin >> appt[i].number;
        cout << "Enter the name of the owner: ";
        cin >> appt[i].owner;
        cout << "Enter the condition: " << endl;
        cin >> appt[i].condition;
    }
}

Ps:请注意我假设你包含了命名空间std; Ps2:我没有包括任何相关的包含。

答案 2 :(得分:0)

我认为你在这里感到困惑。

Apartment building[50]

表示这是一个包含50个元素的数组,每个元素都是一个类型为Apartment的结构。

例如,它应该是这样的:

struct Apartment obj1;
struct Apartment obj2;
struct Apartment obj3;

Apartment building[3] = {obj1, obj2, obj3};

我想知道“在数组中保存对象”的主要目的是什么?

数组的每个元素都应该具有相同的数据类型,并且结构的每个字段可能不具有相同的数据类型,因此您不应该“将对象保存在数组中”