初始化多维数组c ++

时间:2012-02-08 10:52:50

标签: c++ windows multidimensional-array

我在VC ++ 2008工作,我正在尝试分配一个多维的字符数组来完成一些文件工作。我知道无论何时分配数组,阵列的所有成员通常都应按连续顺序进行初始化。我现在拥有的是这个。

char ** thing = new char *[lineY];
for (int ii = 0; ii < lineY; ii++){
    thing[ii] = new char[lineX];
}
... // working with array
// deleting each part of the array.
for (int ii = 0; ii < lineY; ii++){
    delete [] thing[ii];
}
delete [] thing;

我遇到的问题是,如果我将数组添加到监视列表中,或者在分配后立即放置一个中断,调试器会声明该数组等于51或32之类的数字,而不是带有索引和值的空间块,但是当我尝试通过分配这个来初始化每个索引的值时:

char ** thing = new char *[lineY];
for (int ii = 0; ii < lineY; ii++){
    thing[ii] = new char[lineX];
        for (int jj = 0; jj < lineX; jj++){
        thing[ii][jj] = '';
    }
}

编辑:编译器抛出“C2137空字符常量”我做错了吗? 编辑:在错误号上读取msdn,找到答案

2 个答案:

答案 0 :(得分:1)

您无法编写thing[ii][jj] = '',因为''是一个空字符常量,不允许这样做。尝试将''替换为' '' s之间的空格)

答案 1 :(得分:0)

是否是lineX和lineY编译时常量?在那种情况下:

std::array<std::array<char, lineX>, lineY> thing;

否则:

std::vector<std::vector<char> > thing(lineY, std::vector<char>(lineX));