Загрузка...

Как вывести массив структур в виде таблицы?

Тема в разделе C/C++ создана пользователем rtardedkiddo 30 мар 2023. 222 просмотра

  1. rtardedkiddo
    rtardedkiddo Автор темы 30 мар 2023 6 13 июн 2021
    Шапка
     
  2. Daemon
    Daemon 30 мар 2023 1680 8 янв 2021
    Использовать параметризацию потоков ввода/вывода.
    Можете например для вашей структуры завести метод либо перегрузку для вывода и в цикле для каждого элемента вызывать его/ее.
     
    30 мар 2023 Изменено
    1. rtardedkiddo Автор темы
  3. Leva63
    Leva63 30 мар 2023 2691 14 мар 2021
    Чтобы вывести элемент структур в stdout, проще всего перегрузить оператор <<. класса std::ostream

    std::ostream& operator<<(std::ostream& out, const YouStruct& obj) {.....}

    В этой прегрузке, Вы можете написать любой удобный Вам формат вывода содержимого объекта структуры.

    Далее просто кидайте объект в cout()

    Вот мини пример :
    C

    #include <vector>
    #include <iostream>

    namespace test {
    struct s
    {
    s(int a, double b, char c) : a(a), b(b), c(c) {}

    int a;
    double b;
    char c;
    };


    std::ostream& operator<<(std::ostream& out, const s& obj) {
    out << obj.a << " " << obj.b << " " << obj.c;
    return out;
    }
    }



    int main()
    {
    std::vector<test::s> v{{1, 1.1, 'a'}, {2, 1.2, 'b'}, {3, 1.3, 'c'}};

    for (const auto& val : v) {
    std::cout << val << std::endl;
    }

    return 0;
    }
     
    1. Daemon
      Leva63, А почему бы дружественную функцию не использовать, она бы обеспечила лучшую инкапсуляцию, в сравнении с пространством имен?
    2. Leva63
    3. Daemon
      Leva63, ну и если придраться, то человек говорил про массив, а не объект vector
  4. r9ess4
    r9ess4 31 мар 2023 1 22 мар 2023
    1. Посмотреть предыдущие комментарии (1)
    2. r9ess4
      Daemon, альтернативы? Автор спросил, как таблицу выводить, можно свою реализацию сделать, то, что привели сверху - не таблица.
    3. Daemon
      r9ess4, средствами std
    4. r9ess4
      Daemon, std не умеет выводить таблицы.
    5. Посмотреть следующие комментарии (1)
Загрузка...
Top