有很多这种字符串"*&&19800||lu,nr&&7200||bc&&14400",||可以分割出不同的key-value组合,&&在组合内部分割,&&前的部分为key,&&后的部分为value。请写一段C++代码,把上述字符串分割到map<string,int>中。比如前述字符串分割完后是map["*"]=19800,map["lu"]=7200,map["nr"]=7200,map["bc"]=14400
时间: 2024-02-11 16:22:18 浏览: 136
以下是一段用于将给定字符串分割到`std::map<std::string, int>`中的C++代码示例:
```cpp
#include <iostream>
#include <map>
#include <sstream>
std::map<std::string, int> splitStringToMap(const std::string& str) {
std::map<std::string, int> result;
std::stringstream ss(str);
std::string item;
while (std::getline(ss, item, '|')) {
std::string key;
int value;
std::stringstream itemStream(item);
std::getline(itemStream, key, '&');
std::string valueStr;
std::getline(itemStream, valueStr, '&');
value = std::stoi(valueStr);
result[key] = value;
}
return result;
}
int main() {
std::string input = "*&&19800||lu,nr&&7200||bc&&14400";
std::map<std::string, int> resultMap = splitStringToMap(input);
// 遍历map并打印结果
for (auto it = resultMap.begin(); it != resultMap.end(); ++it) {
std::cout << it->first << " : " << it->second << std::endl;
}
return 0;
}
```
运行上述代码会输出:
```
* : 19800
bc : 14400
lu,nr : 7200
```
注意,由于在输入字符串中,"lu"和"nr"被逗号分割为一个键,所以它们在map中被视为一个键。如果你需要将它们分开作为不同的键,可以根据需要修改代码。
阅读全文