#include <iostream>
#include <regex>
#include <string>
#include <vector>
std::vector<std::pair<std::string, std::size_t>> Extract(const std::string& s)
{
std::vector<std::pair<std::string, std::size_t>> res;
const std::regex reg{R"(([a-zA-Z]+)(\d*))"};
for (auto it = std::sregex_iterator(s.begin(), s.end(), reg); it != std::sregex_iterator(); ++it)
{
auto m = *it;
res.push_back({m[1], m[2].length() == 0 ? 1 : std::stoi(m[2])});
}
return res;
}
int main() {
for (auto p : Extract("C6H12O6")) {
std::cout << p.first << ": " << p.second << std::endl;
}
std::cout << std::endl;
for (auto p : Extract("H2O")) {
std::cout << p.first << ": " << p.second << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CgpzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c2l6ZV90Pj4gRXh0cmFjdChjb25zdCBzdGQ6OnN0cmluZyYgcykKewoJc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnNpemVfdD4+IHJlczsKCWNvbnN0IHN0ZDo6cmVnZXggcmVne1IiKChbYS16QS1aXSspKFxkKikpIn07CgoJZm9yIChhdXRvIGl0ID0gc3RkOjpzcmVnZXhfaXRlcmF0b3Iocy5iZWdpbigpLCBzLmVuZCgpLCByZWcpOyBpdCAhPSBzdGQ6OnNyZWdleF9pdGVyYXRvcigpOyArK2l0KQoJewoJICAgIGF1dG8gbSA9ICppdDsKCQlyZXMucHVzaF9iYWNrKHttWzFdLCBtWzJdLmxlbmd0aCgpID09IDAgPyAxIDogc3RkOjpzdG9pKG1bMl0pfSk7Cgl9CglyZXR1cm4gcmVzOwp9CgppbnQgbWFpbigpIHsKCWZvciAoYXV0byBwIDogRXh0cmFjdCgiQzZIMTJPNiIpKSB7CgkJc3RkOjpjb3V0IDw8IHAuZmlyc3QgPDwgIjogIiA8PCBwLnNlY29uZCA8PCBzdGQ6OmVuZGw7Cgl9CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJZm9yIChhdXRvIHAgOiBFeHRyYWN0KCJIMk8iKSkgewoJCXN0ZDo6Y291dCA8PCBwLmZpcnN0IDw8ICI6ICIgPDwgcC5zZWNvbmQgPDwgc3RkOjplbmRsOwoJfQkKfQ==