从键盘输入一段字符串,统计其中字符的频率,并按照从大到小顺序输出,用c++
时间: 2024-09-20 12:04:37 浏览: 81
在C++中,你可以使用`std::map`来存储每个字符及其出现的次数,然后遍历这个映射并排序输出。以下是一个简单的示例:
```cpp
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
// 函数模板用于计算字符串中字符的频率
template<typename CharT, typename Traits>
void count_chars(const std::basic_string<CharT, Traits>& str) {
std::map<CharT, int> char_freq;
for (const auto& ch : str) {
char_freq[ch]++;
}
// 使用自定义比较函数对char_freq进行降序排序
struct Compare {
bool operator()(const std::pair<CharT, int>& a, const std::pair<CharT, int>& b) const {
return a.second > b.second;
}
};
// 输出字符及其频率
for (const auto& pair : char_freq) {
std::cout << '\'' << static_cast<char>(pair.first) << "\': " << pair.second << '\n';
}
}
int main() {
std::string input = "Hello, World!";
count_chars(input);
return 0;
}
```
在这个程序中,`count_chars`函数接收一个`std::string`作为输入,计算其中每个字符的出现次数,并使用`std::map`的默认排序(依据键值,即字符)。如果需要按字母顺序而不是出现频率排序,你需要创建一个新的`Compare`结构体。
阅读全文