#include \n#include \n#include \n\nstruct ServerInfo {\n std::string clientId;\n std::string serverEndpoint;\n std::string serverId;\n};\n\nstd::vector parseServerInfo(const std::string& input) {\n std::vector serverInfos;\n std::stringstream ss(input);\n std::string token;\n\n while (std::getline(ss, token, ';')) {\n std::stringstream ss2(token);\n std::string clientInfo;\n std::getline(ss2, clientInfo, ':');\n\n std::string serverInfo;\n std::getline(ss2, serverInfo, ':');\n\n std::string clientId;\n std::string serverEndpoint;\n std::string serverId;\n\n std::stringstream ss3(clientInfo);\n std::getline(ss3, clientId, '@');\n std::getline(ss3, serverEndpoint, '@');\n\n std::stringstream ss4(serverInfo);\n std::getline(ss4, serverEndpoint, '@');\n std::getline(ss4, serverId, '@');\n\n serverInfos.push_back({clientId, serverEndpoint, serverId});\n }\n\n return serverInfos;\n}\n\nint main() {\n std::string input = "clientid1@server endpoint1::server id1;clientid2@server endpoint2::server id2;";\n std::vector serverInfos = parseServerInfo(input);\n\n for (const auto& serverInfo : serverInfos) {\n std::cout << "Client ID: " << serverInfo.clientId << std::endl;\n std::cout << "Server Endpoint: " << serverInfo.serverEndpoint << std::endl;\n std::cout << "Server ID: " << serverInfo.serverId << std::endl;\n std::cout << std::endl;\n }\n\n return 0;\n}