21xrx.com
2024-11-22 10:02:04 Friday
登录
文章检索 我的文章 写文章
在C++中如何求字符串中每个字母?
2023-06-24 09:09:05 深夜i     --     --
C++ 字符串 字母 循环 ASCII码

C++是一种十分强大的编程语言,可以用于开发各种类型的应用程序。在C++中,要求出字符串中每个字母可以使用多种方法,下面我们将对这些方法进行详细讲解。

首先,C++中使用char数组来表示字符串,可以通过遍历数组,使用for循环和条件语句来求出每个字母。例如,以下代码演示了如何打印出给定字符串中每个字母及其出现次数:


#include <iostream>

#include <cstring>

using namespace std;

int main()

{

  char str[] = "Hello World";

  int count[26] = {0};

  for (int i = 0; i < strlen(str); i++)

  {

    if (str[i] >= 'a' && str[i] <= 'z')

      count[str[i] - 'a']++;

    else if (str[i] >= 'A' && str[i] <= 'Z')

      count[str[i] - 'A']++;

  }

  for (int i = 0; i < 26; i++)

  {

    if (count[i] != 0)

      cout << char(i + 'a') << ": " << count[i] << endl;

  }

  return 0;

}

该代码使用了一个整型数组count来统计每个字母出现的次数,初始值为0。在第一个for循环中,遍历字符串中的每个字符,如果是小写字母,则将count数组中对应下标的值加1,否则判断是否为大写字母,是的话同样将count数组中对应下标的值加1。最后在第二个for循环中,打印出count数组每个不为0的元素(即每个字母出现次数不为0),和其对应的字符。

除了使用数组来统计每个字母出现的次数,还可以使用map容器来完成这个任务。map是C++ STL库提供的数据结构,用于存储一组键值对,其中键是唯一的,而值可以是重复的。以下是使用map容器来求出每个字母出现次数的代码:


#include <iostream>

#include <cstring>

#include <map>

using namespace std;

int main()

{

  char str[] = "Hello World";

  map<char, int> mymap;

  for (int i = 0; i < strlen(str); i++)

  {

    if (isalpha(str[i]))

      mymap[str[i]]++;

  }

  for (auto it = mymap.begin(); it != mymap.end(); it++)

  

    cout << it->first << ": " << it->second << endl;

  

  return 0;

}

该代码使用了一个名为mymap的map容器,键是每个字母,值是对应字母出现的次数。在第一个for循环中,遍历字符串中的每个字符,如果是字母,则将该字母作为键,将其对应的值加1(如果该字母是第一次出现,则其对应的值在map容器中自动初始化为0)。最后在第二个for循环中,使用迭代器遍历map容器中的每个元素,打印出相应的字母和出现次数。

综上所述,C++中可以使用char数组和map容器来求出字符串中每个字母。具体的实现方式有多种,开发者可以根据实际需求选择合适的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复