如何使用operator new创建动态2D字符数组?

时间:2014-05-22 04:41:34

标签: c++ string new-operator

我想使用new运算符创建一个字符串数组。但我无法弄清楚如何使用一个命令来做到这一点。

我可以使用像calloc

这样的arg = (char*) calloc(totalarg_velanalyze, 5);来执行此操作

但我被告知要改用new

2 个答案:

答案 0 :(得分:1)

如果打算分配一个固定长度的char数组的连续数组(你称之为2D char数组),语法并不可怕。行宽必须是编译时常量,但行数可以是任意的。给定一些任意主要维度n和一些固定大小的行宽M,您可以这样做:

char (*p)[M] = new char[n][M];

并在不再需要时将其删除:

delete [] p;

从0..n-1访问任何缓冲区i的步骤如下:

p[i]

例如复制" foo"到第三排:

std::strcpy(p[2], "foo");

就像使用常规固定数组阵列一样。

那就是说,我建议除非你有令人信服的理由去做其他事情(一些特殊的遗留API或其他一些)你使用标准库容器。他们真的是猫须。在最低时,您应use smart pointersraw pointers should not own resources

希望它有所帮助(特别注意最后一段)。

答案 1 :(得分:0)

如果您正在使用C ++,最好使用字符串向量。

您可以将其声明为

vector<string> varname(length);
varname[0]="xyz";
varname[1]="dfg";

或者您可以不指定长度并使用push_back();

添加元素