我有一个需要参数const std::string&
的方法。它通常会这样使用:a.doSomething("some string")
但我想检查提供的字符串是不是从nullptr
隐式构造的。当使用const std :: string&作为方法参数类型时,处理nullptr const char *的正确方法是什么?
一个例子:
#include <string>
struct A {
void doSomething(const std::string& arg) {
// if (arg == nullptr) throw; // This is what I want (doesn't work)
if(arg.empty()) // This does not detect nullptr
throw;
}
};
int main(int argc, char* argv[]) {
const char* null_str;
std::string s("");
A a;
a.doSomething(null_str);
a.doSomething(s);
return 0;
}
什么是正确的,优雅的方式来做到这一点?我是否应该提供一个过载doSomething(const char* arg)
,在将它传递给另一个过载时明确构造std::string
之前,它将检查arg
?
注意'“”'不是'nullptr'既不是'null_str',因为它是一个未初始化的指针。 – LogicStuff
处理此问题的正确方法是访问负责的开发人员小组。 – MSalters