C++ c++;将二进制字符串转换为整数或比较两个字符串以查找差异数

C++ c++;将二进制字符串转换为整数或比较两个字符串以查找差异数,c++,string,binary,bitset,C++,String,Binary,Bitset,我使用位集将2个数字转换为二进制数字的字符串表示形式。我现在很难根据这个来确定差异的数量(由于代码中的其他原因,我需要将整数转换为二进制)。不管怎么说,这里有一个我正努力实现的例子: 1110 and 1100 should return 1, 1111 and 0000 should return 4, 1110 and 1110 should return 0; 我将第一个数字存储在成对的2d向量中,如网格[I][j]。第二个。第二个数字是传入的参数,因此称为binaryObserv。我

我使用位集将2个数字转换为二进制数字的字符串表示形式。我现在很难根据这个来确定差异的数量(由于代码中的其他原因,我需要将整数转换为二进制)。不管怎么说,这里有一个我正努力实现的例子:

1110 and 1100 should return 1, 1111 and 0000 should return 4, 1110 and 1110 should return 0;


我将第一个数字存储在成对的2d向量中,如网格[I][j]。第二个。第二个数字是传入的参数,因此称为binaryObserv。我发现bitset中内置了一个to_ulong函数,但这就是我在程序早期使用bitset转换的字符串。我可以将第二个保持为整数,并计算如果我对2个数字进行异或运算,然后将其转换为二进制,我可以遍历结果来计算1的集合数。但是,我无法将第一个(字符串)转换回整数。非常感谢您的帮助。

啊哈,nvm解决了这个问题。我第一次尝试比较字符串(而不是返回int)。这是给感兴趣的人的:

for(uint i = 0; i < grid.size(); i++){
      for(uint j = 0; j < grid[i].size(); j++){
        int acc = 0;
          cout << "num in grid: " <<  grid[i][j].second<< endl;
        for(uint k = 0; k < (grid[i][j].second).length(); k++){
          if((grid[i][j].second).at(k) != binaryObserv.at(k)){
            acc++;
          } 
        }
        cout << "num of differences: " << acc << endl;
      }
    } 


for(uint i=0;i