我正在尝试学习C ++编程,并且我来自C语言。 我写了一个小方法来添加两个二进制数,而程序运行良好,并且能够看到正确的结果,但是我无法将“ sum”打印为字符串。 虽然我可以将“ sum”打印为数组。 有人可以帮忙告诉我我想念的是什么吗?
这是代码-
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
using std::string;
class addBinaryClass
{
private:
string sum;
public:
addBinaryClass()
{
for(int i=0;i<255;i++)
sum[i] = '0';
}
string addBinary(string a, string b)
{
int l1 = a.length();
int l2 = b.length();
int i=0,j=0,k=0,carry=0;
int num1,num2;
i = l1-1;
j= l2-1;
while ( (i>=0) || (j>=0))
{
if(l1>0)
num1 = (a[i] -'0');
else
num1=0;
if(l2>0)
num2 = (b[j] - '0');
else
num2=0;
sum[k] = num1 + num2 + carry ;
carry = sum[k] / 2;
sum[k] = (sum[k] % 2) + '0';
l1--;l2--;i--;j--,k++;
}
sum[k] = (sum [k] + carry);
reverse(sum.begin(), sum.end());
cout << "result is " << sum << endl;
for(int i=0;i<=7;i++)
cout << sum[i];
cout << endl;
return sum;
}
void printBinary()
{
int l=sum.length();
cout << "Binary sum "<< endl;
cout << "length " << l << sum << endl;
cout << endl;
cout << "addBinaryEnd" << endl;
}
void setString()
{
sum = "";
}
};
int main()
{
addBinaryClass s;
s.setString();
string name = "Add Binary begin";
cout << name << endl;
string result = s.addBinary("10001","10111");
s.printBinary();
return 0;
}
这是我得到的输出。请注意“长度0”后的空白处
Add Binary begin
sum is
00010100
Binary sum
length 0
addBinaryEnd
我不明白的是为什么字符串的长度为0。在这种情况下,总和似乎为空。是否需要在末尾附加空字符?