c++ - 将 char 数组转换为具有 4 位元素的 vector

标签 c++ vector bitset

我要使用下面的代码段

#include <iostream>
#include <iterator>
#include <vector>
#include <bitset>
#include <algorithm> 

int _tmain(int argc, _TCHAR* argv[])
{   
    static const char szBits[] = "110101011010";   
    std::vector<std::bitset<4> > str(szBits, szBits + sizeof szBits);   
    std::copy(str.begin(), str.end(), std::ostream_iterator<std::bitset<4> > (std::cout, "\n")); 

    return 0;
}

得到一个包含 3 个元素的 vector 看起来像 1101 1010 1010

但我无法获得我所期望的正确结果。

你能帮帮我吗?谢谢!

最佳答案

std::vector<std::bitset<4> > str(szBits, szBits + sizeof szBits);

这显然是错误的。它实际上是从每个 char 而非 4 个 char 一起创建 vector 的项目。

这是你应该做的:

static const char szBits[] = "110101011010";   
std::vector<std::bitset<4> > str;
for(size_t i = 0 ; (i + 4) < sizeof(szBits) ; i += 4 )
      str.push_back(std::bitset<4>(std::string(&szBits[i], 4))); 

std::copy(str.begin(), str.end(), std::ostream_iterator<std::bitset<4> > (std::cout, "\n")); 

输出:

1101
0101
1010

演示:http://www.ideone.com/27RNL

关于c++ - 将 char 数组转换为具有 4 位元素的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134440/

相关文章:

c++ - 正整数 N 作为使用堆栈的正整数之和

c++ - 用 C++ 管道处理

c++ - 我有一个map<string, vector<record>>,如何从vector<record>中删除记录?

c++ - 位设置为 float 或 double 值 C++

c++ - 使用 bitset 转换带符号的短整型

使用 Boost Regex 的 C++ 正则表达式

C++/Node.js :binding. gyp 库失败

c++ - C++在 vector 中查找特定元素

r - dplyr::选择一列并输出为向量

c++ - 在字符串中将十进制转换为二进制时出错