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());
}
}
如何解决此问题
答案 0 :(得分:1)
由以下原因引起的问题:
if(A == 0) {
return 0;
}
当A == 0
从0
尝试construct an std::string
时。这是相同的 - 因为隐式构造函数调用 - 来:
return std::string(0);
在这种情况下,0
表示空指针,这是非法的。错误消息
basic_string :: _ M_construct null无效
意思完全相同。
如果您希望在A == 0
时返回零,则可以通过将return 0
更改为:
return "0";
答案 1 :(得分:0)
return 0;
调用隐式字符串构造函数,接受指向char return std::string(const char *(0))
的指针。此指针不允许为null。要返回空字符串,请写return std::string()
;
答案 2 :(得分:0)
由于该方法预计会返回std::string
,因此如果std::string(0)
为std::string(NULL)
,您将返回A == 0
〜true
。
要返回std::string
的默认值 - 我猜 - 只需return std::string();
而不是return 0;
。