返回一个多维数组

Posted

技术标签:

【中文标题】返回一个多维数组【英文标题】:returning a multidimensional array 【发布时间】:2014-03-06 18:11:14 【问题描述】:
string THIRDSTEP::DispSched(string movie)

    string data[6][7];
    ifstream file("C:\\Users\\User\\Desktop\\MP 116\\sched1.csv");

    for (int row = 0; row < 7; row++)
    
        string line;
        getline(file, line);
        if (!file.good())
        break;

        stringstream iss(line);

        for (int col = 0; col < 6; col++)
        
            string val;
            getline(iss, val, ',');
            if (!iss.good())
                break;

            stringstream converter(val);
            converter >> data[row][col];
        
    
    return 0;

此代码应。但我不知道怎么做。有任何想法吗?我认为应该使用指针,但是如何使用?

【问题讨论】:

您的问题之前已在此处得到解答:***.com/questions/720707/… 尝试将返回类型设为string* 而不是string。另外,你返回的是什么?除了return 0,我在您的代码中看不到任何回报 字符串* 不起作用 @spiritwolfform 为什么它不起作用? 0 不是多维数组... 【参考方案1】:

您需要返回指向data 的引用或指针(即return &amp;data)。

但是,data 将在您的函数返回后立即超出范围,因此仅此一项将毫无用处。您需要做的是传入一个字符串数组到函数并让它编辑它,或者使用newdelete 显式控制数据的生命周期。

在这种情况下,最好在函数外部创建数据并传入对它的引用。

改动很小的示例

void THIRDSTEP::DispSched(string movie, string (&output)[6][7])

    ifstream file("C:\\Users\\User\\Desktop\\MP 116\\sched1.csv");

    for (int row = 0; row < 6; row++)
    
        string line;
        getline(file, line);
        if (!file.good())
        break;

        stringstream iss(line);

        for (int col = 0; col < 7; col++)
        
            string val;
            getline(iss, val, ',');
            if (!iss.good())
                break;

            stringstream converter(val);
            converter >> output[row][col];
        
    

附带说明,您要避免在循环中使用像 7 和 6 这样的幻数。尝试创建一个 std::vector 的 std::vector 并使用它的迭代器来查找结尾而不是硬编码它的大小。

【讨论】:

【参考方案2】:

一种可能的解决方案:

struct MyStrings

    string s[6][7];
;

MyStrings THIRDSTEP::DispSched(string movie)

     MyStrings strings;
     strings.s[2][3] = movie;
     return strings;

【讨论】:

以上是关于返回一个多维数组的主要内容,如果未能解决你的问题,请参考以下文章

返回一个多维数组

数组的使用 多维数组

在 C++ 中返回多维数组的函数

从给定数组返回多维数组

通过在多维数组中搜索标题返回值

使用php从多维数组中获取子数组