Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检测字符串中的不同字母和数字_C++ - Fatal编程技术网

C++ 如何检测字符串中的不同字母和数字

C++ 如何检测字符串中的不同字母和数字,c++,C++,假设其中有一个随机的、不同的字母和数字字符串,例如“7GGG66HH”。我试图找出一种方法来检测该字符串中包含的每个数字和字母,并输出一个列表,显示每个字母或数字有多少种类型 在试图解决这个问题的同时,我尝试提取每个字母和数字,并将它们放入一个动态数组中。这样我就可以对数组进行排序,统计每个字母和数字出现的次数。但问题是有太多可能的结果可供选择,因此我无法手动对每个字符进行排序。除此之外,我不知道如何处理数组中的项,并将其与while循环关联使用 这是我到目前为止的一个单独的片段 int mai

假设其中有一个随机的、不同的字母和数字字符串,例如
“7GGG66HH”
。我试图找出一种方法来检测该字符串中包含的每个数字和字母,并输出一个列表,显示每个字母或数字有多少种类型

在试图解决这个问题的同时,我尝试提取每个字母和数字,并将它们放入一个动态数组中。这样我就可以对数组进行排序,统计每个字母和数字出现的次数。但问题是有太多可能的结果可供选择,因此我无法手动对每个字符进行排序。除此之外,我不知道如何处理数组中的项,并将其与while循环关联使用

这是我到目前为止的一个单独的片段

int main()
{
  string userInput;
  cin >> userInput;

  vector<string> arrayOfCharacters(0);

  int x = 0;

  while (x < lastElemetOfTheArray)
  {
    // tally up the number of each letter and number present

    ++x;
  }

  // display the number of times each letter and number was present

  return 0;
}
注意到第一个数字是该字符出现的次数


另外,我想知道通过使用while循环和动态数组,我的思维方向是否正确。如果有完全不同的解决方案,或者我使用的方法不正确,请告诉我。谢谢

你可以在你的帮助下完成它。e、 g

//定义映射,键是字符,映射值用于计数
std::map m;
//增加每个字符的计数
//若键不存在,std::map::operator[]将插入一个映射值初始化为0的键
用于(自动c:userInput)
m[c]++;
//把结果打印出来
用于(自动常数和p:m)

字符集有多大?如果是简单的ASCII,那么您可以创建一个256个值的数组,将所有值初始化为0

然后:

for each(character in string){
    myCountArray[character]++;
}

这不适用于大型字符集。

除非您自己实现它,否则例如可能非常有用。如果您需要自己实现它而不需要映射,并且只允许标准的7位ASCII,请记住,每个字符都由一个小整数值表示,这也可以用作数组中的索引。我阅读了您的链接,这很有帮助,但您能否将其作为答案编写,并使用
std::unordered_map
添加我代码的基本大纲?那对我会有很大帮助
// define a map, key is the character, mapped value is used for counting
std::map<char, int> m;

// increase the count on every character
// if key does not already exist, std::map::operator[] would insert one with mapped value initialized as 0
for (auto c : userInput)
    m[c]++;

// print out the result
for (auto const& p : m)
    std::cout << p.second << p.first << std::endl;
for each(character in string){
    myCountArray[character]++;
}