#pragma once #include #include #include #include #include namespace slp { struct ConfigData { std::string name; std::string type; std::string port; friend std::istream& operator>>(std::istream& str, ConfigData& data) { std::string line; constexpr auto DELIMITER = " "; size_t delimtrPos = 0; size_t delimtrPrevPos = 0; std::array tokens; std::getline(str, line); size_t count = 0; delimtrPos = line.find(DELIMITER, delimtrPrevPos); while (delimtrPos != std::string::npos) { tokens[count] = line.substr(delimtrPrevPos, (delimtrPos - delimtrPrevPos)); delimtrPrevPos = delimtrPos + 1; delimtrPos = line.find(DELIMITER, delimtrPrevPos); if (delimtrPos == std::string::npos && delimtrPrevPos < line.length()) { delimtrPos = line.length(); } count++; } if (count > 2) { data.name = tokens[0]; data.type = tokens[1]; data.port = tokens[2]; } else { str.setstate(std::ios::failbit); } return str; } }; } // namespace slp