string Solution::findDigitsInBinary(int A) {
int i, j, rem;
if(A == 0) {
return 0;
}
else {
string res="";
while(A > 0) {
rem = A % 2;
res = res + to_string(rem);
A = A / 2;
}
return std::string(res.rbegin(), res.rend());
}
}
如何解决此问题
该问题由以下原因引起:
if(A == 0) {
return 0;
}
当A == 0
时,它试图从0
构造一个std::string
。这等于 - 因为隐式构造函数调用 - 到:
return std::string(0);
在这种情况下,0
表示非法的空指针。错误消息
basic_string::_M_construct空无效
意思完全一样。
如果您希望在A == 0
时返回零,可以通过将return 0
更改为:
return "0";
>return 0;
调用隐式字符串构造函数,接受指向字符return std::string(const char *(0))
的指针。此指针不允许为空。要返回空字符串,请写return std::string()
;
由于该方法应返回std::string
因此,如果A == 0
true
,则返回std::string(0)
~std::string(NULL)
。
要返回std::string
的默认值 - 我猜 - 只需return std::string();
而不是return 0;
.