我在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,找到答案
答案 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));