在C ++中操作bitset

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++中操作bitset相关的知识,希望对你有一定的参考价值。

我正在寻找一些对二进制字符串的STL支持。 bitset似乎非常有用,但是我无法成功操纵各个位。

#include <iostream>
#include <bitset>

using namespace std;

int main()
{
    string b = bitset<8>(128).to_string();

    for(auto &x:b)
    {
        x = 1 and x-'0' ; cout<<b<<"
";
    }

    return 0;
}

那么,我应该使用vector还是bitset可以用来操作各个位?

上述计划给出:

☺0000000
☺ 000000
☺  00000
☺   0000
☺    000
☺     00
☺      0
☺

我知道这是因为我正在操作char,当设置为0时会打印相关的ascii字符。我的问题是我可以循环一个bitset并同时修改各个位吗?

例如,我肯定不能在下面做:

#include <iostream>       
#include <string>         
#include <bitset>        
int main ()
{
  std::bitset<16> baz (std::string("0101111001"));
  std::cout << "baz: " << baz << '
';

  for(auto &x: baz)

  {
      x = 1&x;

  }

std::cout << "baz: " << baz << '
';

  return 0;
}
答案

你可以使用std::bitset方法轻松操纵set,reset,flip, operator[]的位。见http://www.cplusplus.com/reference/bitset/bitset/

// bitset::reset
#include <iostream>       // std::cout
#include <string>         // std::string
#include <bitset>         // std::bitset

int main ()
{
  std::bitset<4> foo (std::string("1011"));

  std::cout << foo.reset(1) << '
';    // 1001
  std::cout << foo.reset() << '
';     // 0000

  return 0;
}

以上是关于在C ++中操作bitset的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中运行 C 代码

如何在 Java 中运行 C 代码

C程序存储结构

latex在vim中的代码片段

c_cpp 这个简单的代码片段显示了如何使用有符号整数在C中完成插值。 for()循环确定要插入的范围

[转]Go与C语言的互操作