2016-05-03 130 views
1

我正在使用C字符串++。有時如果我不初始化字符串,我會得到不尋常的答案。是否有必要在C++中初始化一個字符串?

什麼是好的做法不初始化字符串,或者如果它必須進行初始化什麼是做到這一點的最好方法是什麼?

+0

最好的做法是更喜歡的事情,在事情沒有攜手。使用常識。 –

回答

8

如果通過「字符串」,你的意思是char*,那麼是的,它們應該是(甚至必須是,或者至少強烈推薦)初始化,就像其他任何變量一樣。

如果「串」,你的意思是std::string,然後它們被初始化爲空字符串(「」),在默認情況下(默認構造函數)自動。

std::string str; 
std::cout << str; // will print nothing (empty string) for sure 
char* str2; 
std::cout << str2; // will most likely print garbage or even crash 
1

C++中的標準建議總是初始化所有變量。所以是的,你應該初始化它。這只是一個好習慣。

當你說「不尋常的答案,」我們需要更多的細節,以提供更多的建議。

+0

「C++中的標準建議總是初始化所有變量。」當然,對於班級類型來說,這通常意味着「依靠默認的ctor來完成它的工作。」如果他們使用'std :: string'(他們顯然不是這樣,那麼這個問題在沒有實際代碼的情況下是無法解析的)將會得到OP。 – Angew

0

如果你在談論std::string,你並不需要「初始化」,因爲它會自動初始化爲在其構造空字符串。

如果你的意思是const char *char *,那麼是的,你應該初始化它們,因爲默認情況下它們指向垃圾。

+0

然後你可以考慮刪除它。如你所願。 – jpo38