| @@ -0,0 +1,33 @@ | |||||
| #pragma once | |||||
| #include <sstream> | |||||
| namespace cppcore | |||||
| { | |||||
| struct string_builder | |||||
| { | |||||
| private: | |||||
| std::ostringstream os; | |||||
| public: | |||||
| /** | |||||
| * @brief Write something to the string builder | |||||
| */ | |||||
| template<typename TArg> | |||||
| string_builder& operator<<(TArg&& arg); | |||||
| /** | |||||
| * @brief Get the constructed string. | |||||
| */ | |||||
| inline std::string str() const; | |||||
| /** | |||||
| * @brief Get the constructed string. | |||||
| */ | |||||
| inline operator std::string() const; | |||||
| }; | |||||
| } | |||||
| #include "string_builder.inl" | |||||
| @@ -0,0 +1,23 @@ | |||||
| #pragma once | |||||
| #include "string_builder.h" | |||||
| namespace cppcore | |||||
| { | |||||
| /* string_builder */ | |||||
| template<typename TArg> | |||||
| string_builder& string_builder::operator<<(TArg&& arg) | |||||
| { | |||||
| os << std::forward<TArg>(arg); | |||||
| return *this; | |||||
| } | |||||
| std::string string_builder::str() const | |||||
| { return os.str(); } | |||||
| string_builder::operator std::string() const | |||||
| { return str(); } | |||||
| } | |||||