2017-02-06 4 views
-6

Я пытаюсь изучить C++ всего неделю. Я хочу перебирать массив, заполненный структурами. Это код, который у меня есть.Как я могу перебирать массив, заполненный структурами?

struct PlayerState 
{ 
    char name[20]; 
    int level; 
    int year; 
    double health; 
    int experience; 
}; 

PlayerState States[2] = { 
    { "Mike", 10, 2017, 10.0, 1}, 
    { "Mike", 10, 2017, 10.0, 1} 
}; 

Как я могу использовать цикл for для вывода вывода этого массива?

+2

Продолжить чтение. – LogicStuff

+1

'for (PlayerState & obj: States) {}' Если вы находитесь на C++ 11 и дальше. – George

ответ

0

Если вы будете делать это часто, определить оператор потока для структуры, а затем цикл над ними (см он живет на Coliru):

#include <iostream> 

struct PlayerState 
{ 
    char name[20]; 
    int level; 
    int year; 
    double health; 
    int experience; 
}; 

std::ostream& operator<< (std::ostream& os, const PlayerState& state) 
{ 
    os << state.name << ": " 
     << state.level << ", " 
     << state.year<< ", " 
     << state.health << ", " 
     << state.experience; 
    return os; 
} 

PlayerState States[2] = { 
    { "Mike", 11, 2017, 11.0, 1}, 
    { "Mike", 10, 2015, 10.0, 1} 
}; 

int main() 
{ 
    for(const auto& state : States) 
    { 
     std::cout << state << '\n'; 
    } 

    std::cout << '\n'; 

    for(auto i = 0u; i < sizeof(States)/sizeof(PlayerState); ++i) 
    { 
     std::cout << States[i] << '\n'; 
    } 
} 
+0

Спасибо за ответ! Могу ли я также получить строку этого массива следующим образом: States [0 [1]? –

+0

@ mike-van-den-hoek: Я добавил традиционный индексный цикл внизу. – metal

Смежные вопросы