我有一个将十进制数转换为二进制数的简单程序。我运行程序时没有出现错误,但我确实得到了一个问号。我应该得到一组像" 00101"我试图使用一个返回字符串的函数。这是我的代码,
#include <iostream>
using namespace std;
#include <string>
string convert(int num)
{
string binary;
int remainder;
while (num !=0 )
{
remainder = num % 2;
num = num / 2;
binary = remainder;
}
return binary;
}
int main()
{
int number;
string binaryNum;
cout << "Enter a Number:";
cin >> number;
binaryNum = convert(number);
cout << "This is your number in binary form:" << binaryNum << endl;
system("pause");
}
有什么想法吗? 谢谢你的帮助
答案 0 :(得分:3)
此代码存在一些问题。首先,您使用行binary
上的=
符号分配字符串binary = remainder
。你可能想写的是binary += remainder
,将余数附加到字符串中。
第二个问题也在那条线上。 string::operator=
和string::operator+=
都有重载的问题。传入int时会调用这些重载。因此字符串被设置为ascii值为0或1的字符,因此是问号字符,这不是您要查找的字符。您可以使用std::to_string
轻松将int
转换为字符串。或者,如果您需要对格式设置进行任何级别的控制,则可以使用this answer中的std::ostringstream
。
换句话说,将binary = remainder;
更改为binary += std::to_string(remainder)
。
第三个问题:while
循环中有一个return语句。无论num
有多大,函数都会在循环一次迭代后返回。删除该return语句,因此convert
函数的最后只有一个。
答案 1 :(得分:-1)
您的代码存在基本问题。 当您返回值时,while循环将只迭代一次。 您应该每次使用余数连接binaryValue,并将其返回到循环外部。 我没有检查逻辑,所以请检查它。