我怎么能在C ++类中初始化二维char指针

时间:2015-04-01 12:50:17

标签: c++ pointers char

class Tool
{
public:
    Tool();
    ~Tool();

private:
    char **s;
};

char *s1[]={"hello","world"};

如何初始化s并使其与s1相同?

s={"hello","world"}

似乎不起作用。

1 个答案:

答案 0 :(得分:1)

虽然您可以使用std::vector<std::string>,但我觉得直接回答您的问题对您更有帮助。

char** s是指向指针的指针;可能是指向指针数组中第一个指针的指针。

char* s1[]是一个指向const数据的指针数组(实际上应该是const)。

如果您希望ss1的工作方式类似,则首先需要分配指针数组,这是其他人推荐std::vector的原因。您可以使用new自行完成,但必须在某个时刻释放已分配的内存。直接使用new很容易泄漏。当对象被破坏时,std::vector将释放其分配的内存。如果你愿意的话,你也可以在你的析构函数中调用delete[]

分配了数组后,您需要std::copy s1中指针数组s中的指针数组{{1}}。它不是一个单独的分配操作。