我是一名新手程序员,我正在创建一个包含几个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作为编译器,以防它有任何区别。
答案 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};
我想知道“在数组中保存对象”的主要目的是什么?
数组的每个元素都应该具有相同的数据类型,并且结构的每个字段可能不具有相同的数据类型,因此您不应该“将对象保存在数组中”