Загрузка...

How to display an array of structures as a table?

Thread in C/C++ created by rtardedkiddo Mar 30, 2023. 219 views

  1. rtardedkiddo
    rtardedkiddo Topic starter Mar 30, 2023 6 Jun 13, 2021
    Шапка
     
  2. Daemon
    Daemon Mar 30, 2023 1680 Jan 8, 2021
    Использовать параметризацию потоков ввода/вывода.
    Можете например для вашей структуры завести метод либо перегрузку для вывода и в цикле для каждого элемента вызывать его/ее.
     
    1. rtardedkiddo Topic starter
  3. Leva63
    Leva63 Mar 30, 2023 2691 Mar 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 Mar 31, 2023 1 Mar 22, 2023
    1. View previous comments (2)
    2. Daemon
      r9ess4, средствами std
    3. r9ess4
      Daemon, std не умеет выводить таблицы.
    4. Daemon
      r9ess4, да, получается свою только если делать (штатными средствами)
Loading...
Top