我正在使用C字符串++。有時如果我不初始化字符串,我會得到不尋常的答案。是否有必要在C++中初始化一個字符串?
什麼是好的做法不初始化字符串,或者如果它必須進行初始化什麼是做到這一點的最好方法是什麼?
我正在使用C字符串++。有時如果我不初始化字符串,我會得到不尋常的答案。是否有必要在C++中初始化一個字符串?
什麼是好的做法不初始化字符串,或者如果它必須進行初始化什麼是做到這一點的最好方法是什麼?
如果通過「字符串」,你的意思是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
C++中的標準建議總是初始化所有變量。所以是的,你應該初始化它。這只是一個好習慣。
當你說「不尋常的答案,」我們需要更多的細節,以提供更多的建議。
「C++中的標準建議總是初始化所有變量。」當然,對於班級類型來說,這通常意味着「依靠默認的ctor來完成它的工作。」如果他們使用'std :: string'(他們顯然不是這樣,那麼這個問題在沒有實際代碼的情況下是無法解析的)將會得到OP。 – Angew
如果你在談論std::string
,你並不需要「初始化」,因爲它會自動初始化爲在其構造空字符串。
如果你的意思是const char *
或char *
,那麼是的,你應該初始化它們,因爲默認情況下它們指向垃圾。
然後你可以考慮刪除它。如你所願。 – jpo38
最好的做法是更喜歡的事情,在事情沒有攜手。使用常識。 –