请你实现一个算法提取字符串"[123],[456],[789]" 中的"123" "456" "789" 字串 保存到容器中 c++
时间: 2024-09-21 12:07:25 浏览: 34
sqlserver中比较一个字符串中是否含含另一个字符串中的一个字符
为了实现这个功能,你可以使用C++的`std::string`和`std::vector<std::string>`容器来存储从给定字符串中提取出的数字序列。这里是一个简单的示例,展示了如何遍历字符串并提取子串:
```cpp
#include <iostream>
#include <sstream> // 用于字符串流操作
#include <vector>
// 提取单个数字字符串
std::string extractNumber(const std::string& str) {
std::size_t start = str.find("[");
if (start == std::string::npos) { // 如果找不到开始符号,返回空字符串
return "";
}
start += 1; // 跳过左方的[
std::size_t end = str.find("]", start);
if (end == std::string::npos) { // 检查结束符号是否存在
return "";
}
return str.substr(start, end - start); // 返回匹配的子串
}
int main() {
std::string input = "[123],[456],[789]";
std::vector<std::string> numberStrings;
std::size_t pos = 0;
while ((pos = input.find(",")) != std::string::npos) { // 遍历输入字符串,查找逗号分隔的部分
std::string subStr = input.substr(0, pos); // 获取到左至第一个逗号的部分
numberStrings.push_back(subStr); // 添加到容器
input.erase(0, pos + 1); // 移除已处理的部分
}
// 处理最后一个子串(可能没有逗号)
if (!input.empty()) {
numberStrings.push_back(input);
}
for (const auto& num : numberStrings) {
std::cout << "提取的数字子串:" << num << std::endl;
}
阅读全文