【问题标题】:C++ ostream char**C++ ostream 字符**
【发布时间】:2014-08-23 19:31:48
【问题描述】:

我建立了一个类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,它是二维动态字符数组?

【问题讨论】:

  • 使用std::vector&lt;std::string&gt; 而不是char**
  • 我同意上述观点:为什么要把事情复杂化?

标签: c++ ostream


【解决方案1】:

使用for 循环。

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

【讨论】:

    【解决方案2】:

    使用标准算法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; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-31
      • 2011-09-29
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      相关资源
      最近更新 更多