@@ -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(); } | |||||
} |