21xrx.com
2025-03-22 14:12:32 Saturday
文章检索 我的文章 写文章
在C++中如何求字符串中每个字母?
2023-06-24 09:09:05 深夜i     13     0
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容器来求出字符串中每个字母。具体的实现方式有多种,开发者可以根据实际需求选择合适的方法。

  
  

评论区

请求出错了