将字符串中的char转换为C ++中的vector <bool>

时间:2017-04-10 10:02:21

标签: c++ c++11 vector bits

我有一个字符串

std::string line="AGGTAATTCTATTAGAAAAATGGTGTATGTATTTTTACTTACTAATGCAAAGTTTAACAATTACCACTTCATGTATTAAAAGATACTAAC";

我希望将此字符串转换为矢量,以便

A=>00
C=>01
T=>10
G=>11

每个char将表示为2位,因此vector的大小将使字符串长度加倍。

有没有一种有效的方法呢?最琐碎的解决方案是这样的:

void convert2vec(std::string& str)
{
   std::vector<bool> bits;
   int size= str.length();
   for(int i=0;i<size;++i)
   {
       switch(str[i]){
       case 'A':
        bits.push_back(0); // A = 00
        bits.push_back(0);
        break;
       case 'C':  //C =  01
        bits.push_back(0);
        bits.push_back(1);
        break;
       case 'T': // T = 10
        bits.push_back(1);
        bits.push_back(0);
        break;
       case 'G': //G=11
        bits.push_back(1);
        bits.push_back(1);
        break;
    default:
        cout<<"error";
    }
}
for (auto ch:bits)
{
    cout<<ch;
}
}

0 个答案:

没有答案