我想使用new运算符创建一个字符串数组。但我无法弄清楚如何使用一个命令来做到这一点。
我可以使用像calloc
arg = (char*) calloc(totalarg_velanalyze, 5);
来执行此操作
但我被告知要改用new
。
答案 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 pointers,raw pointers should not own resources。
希望它有所帮助(特别注意最后一段)。
答案 1 :(得分:0)
如果您正在使用C ++,最好使用字符串向量。
您可以将其声明为
vector<string> varname(length);
varname[0]="xyz";
varname[1]="dfg";
或者您可以不指定长度并使用push_back();