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