我正在使用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
最好的做法是更喜欢的事情,在事情没有携手。使用常识。 –