Как заполинть массив созданым типом данных с++
Только начал активно изучать плюсы. Дошел до ООП. у меня есть структура типа Person, в котрой хранятся id age name. Я создаю массив типа Person. Как мне его заполнить?
struct Person
{
std::string id;
std::string age;
std::string name;
/* data */
};
int main(){
std::string id;
std::string age;
std::string name;
Person arr[10];
for(int i =3;i<3;i++){
std::cout << "ID: ";
std::cin >> id;
std::cout << "AGE: ";
std::cin >> age;
std::cout << "NAME: ";
std::cin >> name;
arr[i] = id + age + name;
}
for(int i=3;i<3;i++){
std::cout << arr[i] << std::endl;
}
Ответы (2 шт):
Автор решения: Evgenii Izhboldin
→ Ссылка
Прочитайте как происходит обращение к членам структур или классов.
Пример ниже привел:
struct Person
{
std::string id;
std::string age;
std::string name;
/* data */
};
int main() {
std::string id;
std::string age;
std::string name;
Person arr[10];
for(int i=0; i<3; i++){
std::cout << "ID: ";
std::cin >> id;
std::cout << "AGE: ";
std::cin >> age;
std::cout << "NAME: ";
std::cin >> name;
// записываем в объект
arr[i].id = id;
arr[i].age = age;
arr[i].name = name;
}
for(int i=3;i<3;i++){
std::cout << arr[i] << std::endl;
}
В данном примере можно было вообще не объявлять внутри main еще переменные id, age, name. А сразу использовать arr[i].id, arr[i].age, arr[i].name
Автор решения: EOF
→ Ссылка
- У Вас счётчик цикла начинается с
3и условие в цикле:i < 3. Т.е. цикл не выполнится ни разу, ибо условие сразу дастfalse. - Чтобы получить доступ к членам структуры нужно использовать операцию членства (
.).
Вот как (скорее всего) должен выглядеть Ваш цикл:
for (int i = 0; i < 3; i++)
{
std::cout << "ID: ";
std::cin >> arr[i].id;
std::cout << "AGE: ";
std::cin >> arr[i].age;
std::cout << "NAME: ";
std::cin >> arr[i].name;
}
Как видите, переменные id, age и name уже не нужны.
Теперь по поводу цикла вывода. cout не знает как выводить Ваш тип данных. Поэтому нужно выводить каждый член отдельно:
for (int i = 0; i < 3; i++)
{
std::cout << arr[i].id << std::endl;
std::cout << arr[i].age << std::endl;
std::cout << arr[i].name << std::endl;
}