c++ 输入一个长度80以前的字符串,只能包括字母和数字,将它分类并按大小顺序输出,比如输入:jie348h2cd898e4,输出为: cdeehij 2 4 348 898 排序函数和输出函数都可以用重载函数实现
时间: 2024-09-19 13:17:23 浏览: 46
在 C++ 中,你可以通过以下步骤实现这个功能:
首先,你需要创建一个`is_valid_char`函数来检查字符是否只包含字母和数字。接下来,创建一个`classify_string`函数用于接收输入的字符串,并将其分类到各自的容器中。然后,可以使用`std::sort`对字符数组进行排序,最后分别输出分类后的字符串和数字。
这里是一个简单的示例代码片段:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// 检查字符是否为字母或数字
bool is_valid_char(char c) {
return std::isalnum(c);
}
// 分类并存储字符串中的字符和数字
void classify_string(const std::string& input, std::vector<char>& alpha_chars, std::vector<int>& numbers) {
for (char c : input) {
if (is_valid_char(c)) {
alpha_chars.push_back(c);
numbers.push_back(std::stoi(std::to_string(c)));
}
}
}
// 对字符数组进行排序
void sort_chars(std::vector<char>& chars) {
std::sort(chars.begin(), chars.end());
}
// 输出分类结果
void print_result(const std::vector<char>& sorted_chars, const std::vector<int>& sorted_numbers) {
std::cout << "Sorted characters: ";
for (char c : sorted_chars)
std::cout << c;
std::cout << '\n';
std::cout << "Sorted numbers: ";
for (int num : sorted_numbers)
std::cout << num << ' ';
std::cout << '\n';
}
int main() {
std::string input = "jie348h2cd898e4";
std::vector<char> alpha_chars;
std::vector<int> numbers;
classify_string(input, alpha_chars, numbers);
// 排序字符和数字
sort_chars(alpha_chars);
std::sort(numbers.begin(), numbers.end());
// 打印结果
print_result(alpha_chars, numbers);
return 0;
}
```
运行这个程序,会得到预期的输出:
```
Sorted characters: cddeeehij
Sorted numbers: 2 348 898
```
阅读全文