首页 > 解决方案 > 为什么我不能从字符串函数返回字符串数组?

问题描述

我想使用我的函数创建一个字符串数组,但我的字符串函数的返回不起作用。

string input() {
    int months[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    string array[12];

    for (int i = 0; i < 12; i++)
    {
        int j = 0;
        while (j < months[i])
        {
            array[i] = array[i] + "-";
            j++;
        }
            }
    return array[12];
}



int main() {

    string array[12];
    array[12] = input();
    return 0;
}

标签: c++arraysstringreturn-value

解决方案


首先,您的函数被声明为返回单个 std::string对象。其次,返回12 个元素数组中的array[12]13个元素。

而且您实际上不能从函数返回纯数组。数组衰减为指向其第一个元素的指针,并且随着函数返回时数组的生命周期结束,该指针将立即变为无效。

有几个解决方案:要么将数组(作为指向第一个元素的指针)作为参数传递给函数。或者返回例如一个std::array对象。


推荐阅读