无法在C ++中打印字符串

时间:2018-07-03 19:32:02

标签: c++ string

我正在尝试学习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。在这种情况下,总和似乎为空。是否需要在末尾附加空字符?

0 个答案:

没有答案