2015-04-01 54 views
-11
class Tool 
{ 
public: 
    Tool(); 
    ~Tool(); 

private: 
    char **s; 
}; 

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

我怎么能初始化s二维字符指针,并使其同s1我怎么能初始化C++类

s={"hello","world"} 

似乎不起作用。

+1

@Anguslilei'char ** s;'这不是一个二维数组,这是一个指向指针的指针。 – 2015-04-01 12:53:14

+0

总猜测,'std :: vector >' – 2015-04-01 13:02:53

+0

你永远不应该。你应该使用一个字符串向量。 – 2015-04-01 13:04:43

回答

1

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

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

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

如果你想s来的工作方式类似于s1,你首先需要分配的指针数组,这是建议由其他原因std::vector。你可以用new自己做,但是你必须在某个时候释放分配的内存。直接使用new容易泄漏。当对象被销毁时,std::vector将释放其分配的内存。如果你愿意,你也可以在你的析构函数中调用delete[]

当你的数组已被分配时,你需要的std::copy指针数组到指定的s指针数组。这不是一个单独的分配操作。

+0

s1似乎很难与s1类似地工作。现在,我知道s和s1之间的区别,非常感谢大家! – Anguslilei 2015-04-01 14:09:17

+0

而在于其他人推荐std :: vector 的原因:) – 2015-04-01 16:39:29