将字符串数组存储在类成员函数中并返回

Posted

技术标签:

【中文标题】将字符串数组存储在类成员函数中并返回【英文标题】:Storing a string array in a class member function and returning it 【发布时间】:2015-01-20 02:00:45 【问题描述】:

您好,如果有人花时间编写一种简单的方法来将字符串数组存储在类成员函数中并在主函数中返回该值,我将不胜感激。

这就是我所拥有的。我想在这个数组中存储 4 个不同的作者,然后打印出来。

  void setauthor(string a[4])
    
        string authors[4] = a[4];
    

谢谢

【问题讨论】:

std::array<std::string, 4> 使用 std::vector。传递、复制和存储要容易得多。 很抱歉,我已经开始学习 C++ 课程,只是学习基础知识,而我还没有学过向量之类的东西。 在初学者教育方面,std::vectorstd::array 比原始数组更基础。 【参考方案1】:

为什么不使用简单的 for 循环? 虽然你需要一个额外的参数,但如果作者号是固定的,那么这应该是最简单的。

void setauthor(string a[4],int number)

    string author[4];
    for(int i=0;i<number;i++)
    
        author[i]= a[i];
        cout<<author[i];
    

【讨论】:

为什么需要传递number?为什么每一步都打印author[i]?你为什么不使用std::copy author[i] 用于检查,我没有使用 std::copy 因为我想保持它尽可能简单:)【参考方案2】:

你不能像这样在构造时复制一个数组,但你可以在之后做:

void setauthor(string a[4])

    string authors[4];
    std::copy(a, a+4, authors);

您需要在顶部#include &lt;algorithm&gt;

【讨论】:

【参考方案3】:

只需使用具有复制语义的std::array&lt;std::string, 4&gt;

void setauthor(std::array<std::string, 4> a)

    std::array<std::string, 4> authors = a;

您需要在顶部#include &lt;array&gt;

您甚至可以声明一个别名以使其更易于编写:

using four_strings = std::array<std::string, 4>;

void setauthor(four_strings a)

    four_strings authors = a;

【讨论】:

那么我将如何将字符串存储到该代码中。像这样? 书籍[i].setauthor(作者)

以上是关于将字符串数组存储在类成员函数中并返回的主要内容,如果未能解决你的问题,请参考以下文章

无法在类的析构函数中删除指向数组的成员指针

mysql怎么将字段里的字符串转换成数组,并且返回数组的元素个数, 例:字段中存储的是11.11 返回的是2

将字符串存储在 mmap 共享数组中? (C)

在类构造函数内初始化 Dev C 中的字符串数组

将二维字符串数组保存在 .text 文件中并从中加载

将其他类型转换为 Impala 数组