2016-05-03 90 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