C ++ ostream char **

0

Я построил класс Client, и я хочу, чтобы получить ostream его. Это класс:

class Client {
    MyString id;
    MyString full_name;
    char gender;
    unsigned short age;
    unsigned short hobbies_num;
    char** hobbies_list;

и вот фрагмент кода, который я уже писал:

ostream& operator<<(ostream& osc, const Client& for_print)
{
    return osc << for_print.id << endl << for_print.full_name << endl << for_print.gender << endl << for_print.age << endl << for_print.hobbies_num << endl;
}

Мой вопрос: как напечатать последний член hobbies_list, который представляет собой двухмерный динамический массив символов?

  • 5
    Используйте std::vector<std::string> вместо char** .
  • 0
    Я согласен с вышесказанным: зачем все усложнять?
Теги:
ostream

2 ответа

0
Лучший ответ

Используйте цикл for.

for (int i = 0; i < for_print.hobbies_num; i++) {
    osc << for_print.hobbies_list[i] << endl;
}
0

Использовать стандартный алгоритм std::for_each:

std::ostream& operator<<(std::ostream& osc, const Client& for_print)
{
    osc << for_print.id << endl << for_print.full_name << endl << for_print.gender << endl << for_print.age << endl << for_print.hobbies_num << endl;
    for_each(for_print.hobbies_list, for_print.hobbies_list + for_print.hobbies_num, [&](char* x){osc << x << endl; });
    return osc; 
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню