Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在C++; 我试图学习C++中的代码,我来自C背景。 我写了一个小方法来添加两个二进制数,虽然程序运行良好,我能够看到正确的结果,但我不能将“和”打印为字符串。 而我可以将“和”打印为数组。 有人能帮我告诉我我错过了什么吗_C++_String - Fatal编程技术网

无法在C++; 我试图学习C++中的代码,我来自C背景。 我写了一个小方法来添加两个二进制数,虽然程序运行良好,我能够看到正确的结果,但我不能将“和”打印为字符串。 而我可以将“和”打印为数组。 有人能帮我告诉我我错过了什么吗

无法在C++; 我试图学习C++中的代码,我来自C背景。 我写了一个小方法来添加两个二进制数,虽然程序运行良好,我能够看到正确的结果,但我不能将“和”打印为字符串。 而我可以将“和”打印为数组。 有人能帮我告诉我我错过了什么吗,c++,string,C++,String,这是代码- #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++)

这是代码-

#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。本例中的总和似乎为空。我是否需要在结尾追加空字符

您从未更改过字符串的大小。你所有的
sum[i]=…
赋值都没有做你认为他们在做的事情:)你意识到你在给字符串赋值int而不是char,对吗?另外,您是否考虑过使用字符串的填充构造函数而不是该循环?字符串(大小n,字符c);当我看到像
l1--;l2--;我--;j--,k++我立刻变得非常担心。这段代码应该是这么模糊吗?C++是一个棘手的事情,首先要正确,所以不要让你的生活变得更困难,因为有大量的变量有无谓的名字。code>将整个
std
命名空间拉入全局命名空间。这使得
使用std::string无意义。使用
sum[i]
可以访问字符串的元素i,但在代码中没有任何地方可以增加该字符串的大小(它仍然是空的)。
Add Binary begin
sum is 
00010100
Binary sum 
length 0

addBinaryEnd