我有一个字符串
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;
}
}