String 互补DNA(C+;+;)

String 互补DNA(C+;+;),string,dna-sequence,String,Dna Sequence,任务:根据新的Dna字符串的模式为其编写代码。正如你所知,在DNA字符串中,符号“A”和“T”是彼此的补充,如“C”和“G”。 例如:DNA链(“ATTGC”)//返回“TAACG”或DNA链(“GTAT”)//返回“CATA” 我的代码=> #include <string> #include <vector> #include <iostream> std::string DNAStrand(const std::string& dna) {

任务:根据新的Dna字符串的模式为其编写代码。正如你所知,在DNA字符串中,符号“A”和“T”是彼此的补充,如“C”和“G”。 例如:
DNA链(“ATTGC”)//返回“TAACG”
DNA链(“GTAT”)//返回“CATA”
我的代码=>

#include <string>
#include <vector>
#include <iostream>
std::string DNAStrand(const std::string& dna)
{
  std::string Sym;
  std::string c;
  std::stringstream s;
  s << Sym;
  s >> c;
  for(int i = 0; i < dna.size() - 1; i++) {
      switch (dna[i]) {
          case ('A'):
          Sym[i] = 'T';
          break;
          case ('T'): 
          Sym[i] = 'A';
          break;
          case ('C'):
          Sym[i] = 'G';
          break;
          case ('G'):
          Sym[i] = 'C';
          break;
          default:
          std::cout << "invalid";
} return c.str();
}

int main() {
  std::cout << DNAStrand("ATTGC") << "\n"; //retun "TAACG"
  std::cout << DNAStrand("GTAT") << "\n";  //retun "CATA"
}
}
#包括
#包括
#包括
std::string DNAStrand(const std::string&dna)
{
std::字符串符号;
std::字符串c;
std::strings;
s>c;
对于(int i=0;istd::cout您已经创建了一个
向量
,但是在
if
语句中,您正在将
向量
的元素设置为
字符
s。您想要构建的是
字符串
,而不是
向量

您应该将后续的
if
语句替换为
else if
,或者使用
开关
语句。否则,在满足
if
语句之后的
if
语句将不必要地执行


将此
向量
替换为一个。将流命名为
s
,您将用
s追加一个名为
c
字符。您的问题是什么?此代码在运行时会做什么?为什么会出错?显示示例输入、所需输出和当前输出;完整解释问题;完整引用错误消息。如何处理我用一个ostringstream替换向量吗?我很困惑little@PooryaKeshavarzi您正在将字符设置为字符串向量的元素。请删除该向量,并将字符推送到ostringstream。然后通过调用.str()获得结果在ostringstream上。我更新了我的问题。告诉我要更改什么。如果您想使用它,请阅读字符串和ostringstream的文档。如果您想预分配字符串,则需要使用正确的大小初始化它。