【发布时间】:2012-03-10 10:42:14
【问题描述】:
如何使用 char** 创建一个包含 n 个字符串的数组?
char** lit;
*lit = (char*)calloc(this->nr_param, sizeof(char*));
for(int i = 0; i < this->nr_param; i++)
lit[i] = (char*) calloc(this->nr_param, sizeof(char));
是这样吗? 如果是这样,我如何访问元素?假设我的数组将包含以下元素: aaab,阿巴,巴布;
我想要这个结构:
lit[0] = "aaab";
lit[1] = "abba";
lit[2] = "baab";
我如何声明它们没问题?
【问题讨论】:
-
为什么?当然你应该使用
vector<string>?至于Q中的代码,第一个calloc需要sizeof(char*)而不是sizeof(char),第二个calloc需要为字符串分配足够的空间,并且与nr_param无关。 -
为什么需要字符串?你的代码中没有 c++ 字符串?
-
@Dementor 是什么让你认为
vector<string>不能做到这一点? -
@Dementor:这是一个典型的例子,说明你一直在错误地学习 C++。
vector<string>是迄今为止最好的解决方案,它的行为完全符合您的需要,但由于某种原因,您自欺欺人地认为 C++ 中需要指针(大多数情况下不需要)。 -
@Dementor:不不不,永远不要使用
new。只需std::vector<std::string> lit;,就完成了。认真地忘记指针和new。这些是非常高级的小众主题,在您确信自己需要它们之前,您不应该需要它们。