Загрузка...

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

Тема в разделе 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. Посмотреть следующие комментарии (1)
  4. r9ess4
    r9ess4 31 мар 2023 1 22 мар 2023
    1. Посмотреть предыдущие комментарии (2)
    2. Daemon
      r9ess4, средствами std
    3. r9ess4
      Daemon, std не умеет выводить таблицы.
    4. Daemon
      r9ess4, да, получается свою только если делать (штатными средствами)
Загрузка...
Top