我应该检查"std::string.c_str"是否为空吗?
Should I check if "std::string.c_str" is NULL?
我正在用Xcode编写代码C++代码。在实例中,我确保所有字段都有效。
SomeClass *myclass = new SomeClass();
std::string myString;
if ( (myClass) && (myString.c_str)) {
return true;
} else {
return false;
}
我应该检查testString.c_str
吗?有意义吗?
new(( 运算符的默认行为是返回新对象,或者在内存分配失败时引发异常。因此,您无需检查myClass
是否为 NULL,除非您设置标志来更改行为或为您的类实现您自己的 new(( 运算符。
此外,myClass
周围的额外括号是不必要的。表达您要检查的内容的更好方法是
if ((myClass != nullptr) &&
然后,您当前正在测试std::string
类中c_str()
的方法的地址是否不为 NULL。我猜不想你想做。
首先,您需要编写myString.c_str()
。然后,此方法永远不会返回 NULL 指针,它可以返回的是一个空的 C 字符串。但这最好用std::string::empty()
进行测试,所以你的支票看起来像这样:
if (myString.empty()) {
return false;
} else {
return true;
}
当然可以缩短为
return !myString.empty();
最后:如果你在函数/方法中有这段代码:谁删除了你的新 SomeClass 对象?
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- STR这个实现是否安全且可移植?
- 是否有必要在Regex_search中使用.str()存储Match.suffix()
- .Net字符串是否可以在不复制的情况下交给fn(const char16_t*str)
- 用于 str.find() 的size_t数据类型是否安全?
- 将SWIG应用于C++时,f1(const char*str)与f1(char*str)是否不同
- 我是否负责释放/删除stringstream.str()返回的字符串
- 使用 str.find() 查看单词中是否有特定字母
- 写入 &str[0] 缓冲区(标准:字符串)在 C++11 中是否定义明确的行为?
- 如何检查_bstr_t是否包含字符串(类似于str.find)
- "if (getline(fin, str)) {}" 是否符合 C++11 标准?