29 lines
962 B
C++
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
|
|
}
|
|
};
|
|
} |