Newer
Older
#ifndef RANDOM_STRING_H_
#define RANDOM_STRING_H_
#include <string>
#include <cctype>
#include <random>
#include "random_int.h"
// Just define the ASCII table using an enum. Constant int could be used as well.
using char_traits_t=std::char_traits<char>;
enum class Ascii_limit { lalpha=char_traits_t::to_int_type('a'), lzed=char_traits_t::to_int_type('z'), ualpha=char_traits_t::to_int_type('A'),
uzed=char_traits_t::to_int_type('Z'), firstgraph=char_traits_t::to_int_type('!'), lastgraph=char_traits_t::to_int_type('~')};
class rand_string{
public:
rand_string(int max_size=25, int min_size=0):
rnd_{static_cast<int>(Ascii_limit::firstgraph),static_cast<int>(Ascii_limit::lastgraph)},
rndsize_{min_size,max_size}{};
std::string operator()(){
std::string t;
for(int i=rndsize_();i!=0;--i) {
t+=char_traits_t::to_char_type(rnd_());
}
return t;
}
private:
rand_int rnd_;
rand_int rndsize_;
};
#endif /* RANDOM_STRING_H_ */