Skip to content
Snippets Groups Projects
random_string.h 999 B
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_ */