rnr/Projects/Engine/Header/Helpers/Strings.hpp

29 lines
962 B
C++

#pragma once
#include <string>
#include <memory>
#include <sstream>
#include <random>
#include <ios>
#include <stdint.h>
namespace RNR
{
class Strings
{
public:
static uint8_t random_char();
static std::string random_hex(const uint64_t length);
template<typename ... Args>
static std::string string_format( const std::string& format, Args ... args )
{
int size_s = std::snprintf( nullptr, 0, format.c_str(), args ... ) + 1; // Extra space for '\0'
if( size_s <= 0 ){ throw std::runtime_error( "Error during formatting." ); }
auto size = static_cast<size_t>( size_s );
std::unique_ptr<char[]> buf( new char[ size ] );
std::snprintf( buf.get(), size, format.c_str(), args ... );
return std::string( buf.get(), buf.get() + size - 1 ); // We don't want the '\0' inside
}
};
}