请你用c++完成以下题目:在主函数中输入一个字符串(长度不超过99),存储在一个字符数组中,将该字符串中的数字挑选出来组成新的字符串(数字的先后顺序与原字符串顺序一致),输出新的字符串。注意:字符串中可能包含空格。
时间: 2023-06-25 18:05:34 浏览: 96
下面是一个实现,使用了 C++11 的 Lambda 表达式和标准库函数 `isdigit`:
```c++
#include <iostream>
#include <algorithm>
#include <cstring>
int main() {
char str[100];
std::cin.getline(str, 100);
std::string nums;
std::for_each(str, str + std::strlen(str), [&](char c) {
if (std::isdigit(c)) {
nums += c;
}
});
std::cout << nums << std::endl;
return 0;
}
```
解释一下:
1. 声明一个字符数组 `str`,用于存储输入的字符串。
2. 使用 `std::cin.getline(str, 100)` 从标准输入中读取字符串,并存储在 `str` 中,长度不超过 99。
3. 声明一个空的字符串 `nums`,用于存储提取出来的数字。
4. 使用 `std::for_each` 函数遍历 `str` 中的每个字符,如果是数字就添加到 `nums` 中。这里使用了 Lambda 表达式 `[&]`,表示使用引用捕获外部变量,使得内部函数可以访问 `nums` 变量。
5. 输出 `nums`。
注意事项:
1. `isdigit` 函数是判断字符是否为数字字符的函数,返回值是一个非零值(true)表示是数字字符,返回 0(false)表示不是数字字符。
2. 由于输入的字符串可能包含空格,因此我们需要使用 `std::strlen` 函数获取字符串的长度,遍历时使用 `str + std::strlen(str)` 表示遍历到字符串的末尾。
阅读全文