是否有必要在c ++中初始化一个字符串?

时间:2016-05-03 09:06:15

标签: c++

我在c ++中使用string。如果我不初始化字符串,我有时会得到不寻常的答案。

什么是好习惯不要初始化字符串或者如果必须初始化那么最好的方法是什么?

3 个答案:

答案 0 :(得分:10)

如果用"字符串",你的意思是char*,那么是的,它们应该是(甚至必须是,或者至少是它强烈推荐)初始化,就像任何其他变量一样

如果用" string",你的意思是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 :(得分:1)

c ++中的标准建议总是初始化所有变量。所以是的,你应该初始化它。这只是一种很好的做法。

当你说&#34;不寻常的答案&#34;我们需要更多细节来提供更多建议。

答案 2 :(得分:0)

如果您正在谈论std::string,则不需要“初始化”它,因为它会自动初始化为其构造函数中的空字符串。

如果您的意思是const char *char *,那么您应该初始化它们,因为默认情况下它们指向垃圾。