Я построил класс 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
, который представляет собой двухмерный динамический массив символов?
Используйте цикл for
.
for (int i = 0; i < for_print.hobbies_num; i++) {
osc << for_print.hobbies_list[i] << endl;
}
Использовать стандартный алгоритм 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;
}
std::vector<std::string>
вместоchar**
.