如何使用c ++中的指针将未知大小的多维数组传递给函数?

问题描述

| 就像问题说的那样,我试图将多维数组传递给函数以将其打印到工程项目的文件中。不能更改输入数据的格式,因此请不要建议仅将其输入为其他数据类型。 这个特殊的函数期望一个二维数组(尽管我还有其他二维数组),在运行之前,对数组的大小一无所知。我知道我必须使用指针分别指向数组的每一行,但是我不知道将其传递给函数的语法是什么。在以下代码中,所讨论的数组为\'block \'。主要功能只是我为使其正常工作而做的一些测试示例:
#include<fstream>
using namespace std;

void of_write_blocks(string filename,string block_type[],int **block,int grid[][3],string grade_type[],int grade[][3],int n_blocks,int m[])
{
    ofstream file_out(filename.c_str(),ios::app);
    file_out<<\"\\nblocks\\n(\\n\";

    for(int i=0;i<n_blocks;++i) {
            file_out<<\"   \"<<block_type[i]<<\" ( \";
                    for(int j=0;j<m[i];++j)
                            file_out<<block[i][j]<<\" \";
            file_out<<\") ( \";
            file_out<<grid[i][0]<<\' \'<<grid[i][1]<<\' \'<<grid[i][2]<<\" ) \";
            file_out<<grade_type[i]<<\" ( \";
            file_out<<grade[i][0]<<\' \'<<grade[i][1]<<\' \'<<grade[i][2]<<\" )\\n\";
    }
    file_out<<\");\\n\";
}


//testing example:
int main()
{       
    int block[6][9];
    for(int i=0; i<6;++i) 
            for(int j=0; i<9;++j)
                    block[i][j] = i*j;

    int grid[6][3];
    for(int i=0; i<6;++i)
            for(int j=0; i<3;++j)
                    block[i][j] = i*j;


    int grade[6][3];
    for(int i=0; i<6;++i) 
            for(int j=0; i<3;++j)
                    block[i][j] = i*j;

    string grade_type[6] = {\"simpleGrading\"};
    string block_type[6] = {\"hex\"};
    int m[6] = {8};
    int n_blocks = 6;

    of_write_blocks(\"name\",block_type,block,grid,grade_type,grade,n_blocks,m);
}       
任何帮助表示赞赏!     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)