C++ 如何检查字符是否包含特定的字母

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") {

我正在尝试生成代码来检查一个字符包含多少个“A”、“C”、“G”和“T”字符。但我有点不确定该怎么做。。因为据我所知,没有任何像.contains()这样的操作符可以检查

所需的输出类似于:

"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';
....