这是一段字符串"1 3 5-8 13 15 17-18",怎么将字符串里的数字存入数组
时间: 2024-09-15 14:06:45 浏览: 35
要将字符串 "1 3 5-8 13 15 17-18" 中的数字存入数组,可以按照以下步骤操作:
1. 首先,创建一个动态大小的数组(vector 或者列表)来存储数字。
2. 使用 `std::istringstream` 将字符串分割成一系列的子串,每个子串代表一个单独的数字或范围。
3. 对于每个子串,检查它是否包含 '-',如果是范围,则解析出起始和结束数字;如果不是,则直接添加该数字到数组。
4. 根据子串内容分别处理。
下面是一个简单的 C++ 示例(假设使用 `std::vector<int>`):
```cpp
#include <iostream>
#include <sstream>
#include <vector>
std::vector<int> parseString(const std::string& str) {
std::vector<int> numbers;
std::istringstream iss(str);
std::string token;
while (iss >> token) {
if (token.find('-') != std::string::npos) { // 分割范围
int start, end;
sscanf(token.c_str(), "%d-%d", &start, &end);
for (int i = start; i <= end; ++i) {
numbers.push_back(i);
}
} else { // 单个数字
numbers.push_back(std::stoi(token));
}
}
return numbers;
}
int main() {
std::string str = "1 3 5-8 13 15 17-18";
std::vector<int> result = parseString(str);
for (const auto& number : result) {
std::cout << number << " ";
}
std::cout << std::endl;
return 0;
}
```
运行这段代码,你会得到存储了原始字符串中所有数字的数组。
阅读全文