class Tool
{
public:
Tool();
~Tool();
private:
char **s;
};
char *s1[]={"hello","world"};
我怎么能初始化s
二维字符指针,并使其同s1
?我怎么能初始化C++类
s={"hello","world"}
似乎不起作用。
class Tool
{
public:
Tool();
~Tool();
private:
char **s;
};
char *s1[]={"hello","world"};
我怎么能初始化s
二维字符指针,并使其同s1
?我怎么能初始化C++类
s={"hello","world"}
似乎不起作用。
虽然你可以使用std::vector<std::string>
,但我觉得直接回答你的问题对你更有益。
char** s
是指向指针的指针;可能是一个指向指针数组中第一个指针的指针。
char* s1[]
是指向常量数据的指针数组(实际上应该是const
)。
如果你想s
来的工作方式类似于s1
,你首先需要分配的指针数组,这是建议由其他原因std::vector
。你可以用new
自己做,但是你必须在某个时候释放分配的内存。直接使用new
容易泄漏。当对象被销毁时,std::vector
将释放其分配的内存。如果你愿意,你也可以在你的析构函数中调用delete[]
。
当你的数组已被分配时,你需要的std::copy
指针数组到指定的s
指针数组。这不是一个单独的分配操作。
s1似乎很难与s1类似地工作。现在,我知道s和s1之间的区别,非常感谢大家! – Anguslilei 2015-04-01 14:09:17
而在于其他人推荐std :: vector
@Anguslilei'char ** s;'这不是一个二维数组,这是一个指向指针的指针。 – 2015-04-01 12:53:14
总猜测,'std :: vector>' –
2015-04-01 13:02:53
你永远不应该。你应该使用一个字符串向量。 – 2015-04-01 13:04:43