/******************************************************************************** * Copyright (C) 2017 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * * * * This software is distributed under the terms of the * * GNU Lesser General Public Licence (LGPL) version 3, * * copied verbatim in the file "LICENSE" * ********************************************************************************/ #ifndef FAIR_MQ_TOOLS_STRINGS_H #define FAIR_MQ_TOOLS_STRINGS_H #include #include #include #include #include #include namespace fair { namespace mq { namespace tools { /// @brief concatenates a variable number of args with the << operator via a stringstream /// @param t objects to be concatenated /// @return concatenated string template auto ToString(T&&... t) -> std::string { std::stringstream ss; (void)std::initializer_list{(ss << t, 0)...}; return ss.str(); } /// @brief convert command line arguments from main function to vector of strings inline auto ToStrVector(const int argc, char*const* argv, const bool dropProgramName = true) -> std::vector { auto res = std::vector{}; boost::beast::span argvView(argv, argc); if (dropProgramName) { res.assign(argvView.begin() + 1, argvView.end()); } else { res.assign(argvView.begin(), argvView.end()); } return res; } } /* namespace tools */ } /* namespace mq */ } /* namespace fair */ #endif /* FAIR_MQ_TOOLS_STRINGS_H */