C++ 如何检查字符是否包含特定的字母
我正在尝试生成代码来检查一个字符包含多少个“A”、“C”、“G”和“T”字符。但我有点不确定该怎么做。。因为据我所知,没有任何像.contains()这样的操作符可以检查 所需的输出类似于:C++ 如何检查字符是否包含特定的字母,c++,struct,char,structure,c-strings,C++,Struct,Char,Structure,C Strings,我正在尝试生成代码来检查一个字符包含多少个“A”、“C”、“G”和“T”字符。但我有点不确定该怎么做。。因为据我所知,没有任何像.contains()这样的操作符可以检查 所需的输出类似于: "The char contains (variable amount) of letter A's" 在我的代码中,我现在有: DNAnt countDNAnt(char strand) { DNAnt DNA; if (isupper(strand) == "A") {
"The char contains (variable amount) of letter A's"
在我的代码中,我现在有:
DNAnt countDNAnt(char strand)
{
DNAnt DNA;
if (isupper(strand) == "A")
{
DNA.adenine++;
}
else if (isupper(strand) == "C")
{
DNA.cytosine++;
}
else if (isupper(strand) == "G")
{
DNA.guanine++;
}
else if (isupper(strand) == "T")
{
DNA.thymine++;
}
}
DNAnt是一个结构,它包含我正在检查的所需变量(a、C、G和T)。我试图基本上增加每个元素的数量,只要我在字符中找到它
谢谢你的帮助 发布的代码有很多问题,其中最大的问题是每次都会创建并返回一个新的
DNAnt
。这将使计数方式变得比必要的更复杂,因为现在您必须计数DNAnts
。这里不是修复此代码,而是一种非常简单和愚蠢的不同方法:
std::map<char,int> DNACount;
如果还没有,这将为字符串创建字符/数字配对,并将数字设置为零。然后,与链
配对的数量增加1
所以你所要做的就是通读序列
std::map<char,int> DNACount;
for (char nucleotide:strand)// where strand is a string of nucleotide characters
{
DNACount[toupper(nucleotide)]++;
}
std::cout << "A count = " << DNACount['A'] << '\n';
std::cout << "C count = " << DNACount['C'] << '\n';
....
std::map DNACount;
for(char nucleotide:strand)//其中strand是一个核苷酸字符字符串
{
DNA计数[toupper(核苷酸)]+;
}
std::cout上次我检查时,一个char
足够大,正好可以容纳一个char
。不多也不少。你的意思是,一个字符只包含像“a”这样的字符?如果char就是这样工作的,那么我想我需要稍微改变一下我的逻辑:PYes,这就是char。一个字符。不多不少。你是说toupper
,而不是isupper
。顺便说一句,单引号表示单字母,双引号表示两个或更多字母。所以您的语句应该是“if(isupper(strand)='A')”
。顺便说一句,您可以使用带有字符的开关
;将串
转换为大写,然后使用开关
。
std::map<char,int> DNACount;
for (char nucleotide:strand)// where strand is a string of nucleotide characters
{
DNACount[toupper(nucleotide)]++;
}
std::cout << "A count = " << DNACount['A'] << '\n';
std::cout << "C count = " << DNACount['C'] << '\n';
....