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

How to check if a char contains a specific letter

我正在尝试编写代码来检查一个字符包含多少个 "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)。每当我在 char 中找到它时,我都会尝试基本上添加每个的数量。

感谢您的帮助!

发布的代码有很多问题,其中最大的问题是每次都会创建并返回一个新的 DNAnt。这将使计数方式比必要的更复杂,因为现在您必须计数 DNAnts。这里没有修复此代码,而是一种非常简单且愚蠢的不同方法:

std::map<char,int> DNACount;

创建一个将字符绑定到数字的对象。

DNACount[toupper(strand)]++;

如果还没有,这将为字符 strand 创建一个 character/number 配对并将数字设置为零。然后strand配对的数字加一

所以你所要做的就是通读像

这样的序列
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';
....

Documentation for std::map