【问题标题】:Take input in array of bool在布尔数组中输入
【发布时间】:2015-06-20 14:05:30
【问题描述】:

我想在布尔数组中输入

bool bmp[32];

这将是程序交互。

 Enter binary number : 10101

我想将用户输入的“10101”存储在类似 bool 的数组中。

bmp[32]={1,0,1,0,1};

请帮忙!!

【问题讨论】:

    标签: c++ arrays boolean


    【解决方案1】:

    没什么花哨的,只是读取数据并将其存储到数组中,如下所示:

    #include <string>
    #include <cstdio>
    
    int main() {
        std::string str;
        std::cout << "Enter binary number : ";
        std::cin >> str;
        bool b[32];
        std::size_t size = 0;
        for (auto c : str) {
            b[size++] = c == '1';
        }
    
        // you are all set now.
    
        return 0;
    }
    

    【讨论】:

      【解决方案2】:

      既然是 C++,我们就用std::bitset

      std::cout << "Enter binary number : ";
      
      std::bitset<32> b;
      std::cin >> b;
      

      这不是您要求的 bool 数组 - 但它要好得多。

      【讨论】:

      • ...或者更糟=) 在我个人看来,我会使用单个 int 作为这种情况下的二进制掩码。
      • @Anton 如果你想要 132 位而不是 32 位?
      • 那就是另一个故事了。我的意思是,解决方案在很大程度上取决于任务,当您需要在血腥的位上完成一些工作时,std::bitset 并不总是正确的选择。
      【解决方案3】:

      这应该可以,但下次您自己尝试一下(并发布您尝试过的代码)。

      bool b[ 32 ];
      std::string str = "10101";
      for ( std::string::size_type i = 0U; i < str.length(); ++i )
          b[ i ] = str[ i ] == '1';
      

      或许

      std::vector< bool > b;
      std::string str = "10101";
      b.reserve( str.length() );
      for ( const char c : str )
          b.push_back( c );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 2018-07-19
        • 2014-11-29
        • 1970-01-01
        • 2015-11-07
        • 2016-07-20
        相关资源
        最近更新 更多