如何将bool矢量转换为char矢量?

时间:2017-11-04 16:22:59

标签: c++ vector

例如,我们有一个含有10个内容的矢量测试。我想将此转换为具有相同内容的char矢量。

感谢

3 个答案:

答案 0 :(得分:1)

如果你正在寻找chars的向量,其中true为'1'而false为'0',你可以简单地创建你的bool向量大小的新char向量,并通过填充它来对应bool char:

std::vector<bool> bools{ 1,1,1,0,1,0 };
std::vector<char> chars(bools.size());

for (size_t i = 0; i < chars.size(); ++i)
    chars[i] = bools[i] ? '1' : '0';

答案 1 :(得分:1)

您可以使用std::transform和后插入器来执行此操作 作为一个最小的工作示例:

#include<algorithm>
#include<iterator>
#include<vector>

int main() {
    std::vector<bool> bools{ 1,1,1,0,1,0 };
    std::vector<char> chars;

    std::transform(
        bools.cbegin(), bools.cend(),
        std::back_inserter(chars),
        [](auto b) { return b ? '1' : '0'; });
}

答案 2 :(得分:0)

两种解决方案: 1。 这不是一个单独的解决方案,只是Killzone Kid在C ++ 11方言中的变体,其中range-for更具惯用性。

std::vector<bool> vbool = { 0, 1, 0, 1 };
std::vector<char> vchar(vbool.begin(), vbool.end());

2。 我在这里滥用你没有指定你想要的真值和假值,所以我将使用0和1(而不是'0'和'1')。如果你想移动它,可以随意为每个元素添加'0',因为在C ++的任何字符集中数字都保证是连续的。

DataGridComboBoxColumn

我会选择第二个,因为这是更惯用的。