C++实现提取“32_32_34_1_2”中的所有数字
时间: 2023-11-24 20:07:07 浏览: 33
要提取字符串"32_32_34_1_2"中的所有数字,你可以使用字符串分割和转换操作来实现。以下是一个使用C++的示例代码:
```cpp
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
std::vector<int> extractNumbers(const std::string& str) {
std::vector<int> numbers;
std::stringstream ss(str);
std::string token;
while (getline(ss, token, '_')) {
try {
int number = std::stoi(token);
numbers.push_back(number);
} catch (const std::invalid_argument& ia) {
// 忽略无法转换为数字的部分
}
}
return numbers;
}
int main() {
std::string str = "32_32_34_1_2";
std::vector<int> numbers = extractNumbers(str);
std::cout << "Extracted numbers: ";
for (int number : numbers) {
std::cout << number << " ";
}
std::cout << std::endl;
return 0;
}
```
在上面的代码中,我们定义了一个名为`extractNumbers`的函数,该函数接受一个字符串作为输入,并返回一个包含所有提取到的数字的整数向量。在函数中,我们使用`std::stringstream`和`getline`函数将字符串按照下划线分割为多个子串。然后,我们尝试将每个子串转换为整数,如果转换成功,则将其添加到结果向量中。
在`main`函数中,我们调用`extractNumbers`函数来提取字符串中的数字,并将结果打印出来。
请注意,上述代码假设字符串中的每个数字都可以成功转换为整数。如果遇到无法转换为整数的部分,代码将忽略该部分。如果你的实际需求不同,你可以根据需要进行修改。