8441b0851eb3007c57102897f0d8133852805ce3
10 // Attach to a class for verbosity debug message control
12 class verboseControl
{
14 bool use_verbose
= false;
18 std::cout
<< std::endl
;
20 template<typename First
, typename
... Strings
>
21 void debug(First arg
, const Strings
&... rest
) {
22 if (this->use_verbose
) {
23 std::cout
<< arg
<< " ";
30 std::vector
<std::string
> split(std::string string
, char delim
)
32 std::stringstream
cStream(string
);
34 std::vector
<std::string
> sgts
;
36 while (std::getline(cStream
, seg
, delim
))
42 std::vector
<std::string
> split(std::string s
, std::string delimiter
)
44 std::vector
<std::string
> sgts
;
47 while ((pos
= s
.find(delimiter
)) != std::string::npos
) {
48 token
= s
.substr(0, pos
);
49 sgts
.push_back(token
);
50 s
.erase(0, pos
+ delimiter
.length());
58 std::string
trimspace(std::string
const& str
)
63 std::size_t firstScan
= str
.find_first_not_of(' ');
64 std::size_t first
= firstScan
== std::string::npos
? str
.length() : firstScan
;
65 std::size_t last
= str
.find_last_not_of(' ');
66 return str
.substr(first
, last
- first
+ 1);
69 std::string
trimbt(std::string
const& str
)
74 std::size_t firstScan
= str
.find_first_not_of('\t');
75 std::size_t first
= firstScan
== std::string::npos
? str
.length() : firstScan
;
76 std::size_t last
= str
.find_last_not_of('\t');
77 return str
.substr(first
, last
- first
+ 1);
80 std::string
trim(std::string str
)
82 return trimspace(trimbt(str
));
85 std::string
removeChar(std::string str
, char ch
)
87 str
.erase(std::remove(str
.begin(), str
.end(), ch
), str
.end());
91 std::vector
<std::string
> regexmulti(std::string src
, std::string pattern
)
93 const std::regex
r(pattern
);
97 std::vector
<std::string
> matches
;
98 while (std::regex_search(src
, res
, r
)) {
99 matches
.push_back(res
[0]);
106 std::vector
<std::string
> regexmulti(std::string src
, const std::regex pattern
)
110 std::vector
<std::string
> matches
;
111 while (std::regex_search(src
, res
, pattern
)) {
112 matches
.push_back(res
[0]);