它会如何的问题,如果我的C++代码(如下图所示)具有初始化为空字符串的字符串:初始化字符串为空与空字符串
std::string myStr = "";
....some code to optionally populate 'myStr'...
if (myStr != "") {
// do something
}
与无/空初始化:
std::string myStr;
....some code to optionally populate 'myStr'...
if (myStr != NULL) {
// do something
}
是否有任何最佳实践或陷阱?
'NULL'(概念上)是一个指针,只能这样使用。一个'std :: string'不是一个指针,所以它不应该被合并。 PS。初始化是相同的:'std :: string'的ctor将它设置为空字符串。 – MSalters 2012-07-19 08:58:45
@MSalters嗨我同意你的观点,但如果类型似乎不兼容为什么编译器不会出错。我有VS 2010,它默默地用NULL初始化std :: string。 – 2014-09-01 10:23:59
@Surfing_SO:有一个字符串构造函数,它接受一个指向字符数组的指针,终止于零个char。您错误地没有传递这样的指针(NULL不指向字符数组或其他任何东西)。这是未定义的行为,在这种情况下可能发生任何事情。 – MSalters 2014-09-01 10:29:11