better util

main
Benjamin Kraft 9 months ago
parent df538935a5
commit 2508d4cd51
  1. 47
      src/util.cpp
  2. 43
      src/util.h

@ -0,0 +1,47 @@
#include "util.h"
vector<size_t> findAll(const string& data, const string& toSearch){
vector<size_t> indices;
size_t pos = data.find(toSearch);
while (pos != string::npos){
indices.push_back(pos);
pos = data.find(toSearch, pos + toSearch.size());
}
return indices;
}
void removeAll(string& data, const string& toRemove) {
vector<size_t> indices = findAll(data, toRemove);
std::sort(indices.rbegin(), indices.rend());
for (size_t &i : indices)
data.erase(i, toRemove.size());
}
vector<string> split(const string& data, const char c){
vector<string> parts;
size_t start = 0;
for (size_t i : findAll(data, std::string(1, c))){
parts.push_back(data.substr(start, i - start));
start = i + 1;
}
parts.push_back(data.substr(start));
return parts;
}
bool isDigit(char c, uint8_t& result){
auto val = c - '0';
if (val >= 0 && val < 10){
result = val;
return true;
}
return false;
}
bool isDigit(char c){
auto val = c - '0';
return val >= 0 && val < 10;
}

@ -20,37 +20,12 @@ using std::string, std::vector, std::pair, std::map;
using std::list, std::set, std::unordered_set;
using std::priority_queue;
inline vector<size_t> findAll(const string& data, const string& toSearch){
vector<size_t> indices;
size_t pos = data.find(toSearch);
while (pos != string::npos){
indices.push_back(pos);
pos = data.find(toSearch, pos + toSearch.size());
}
return indices;
}
inline void removeAll(string& data, const string& toRemove) {
vector<size_t> indices = findAll(data, toRemove);
std::sort(indices.rbegin(), indices.rend());
for (size_t &i : indices)
data.erase(i, toRemove.size());
}
inline bool isDigit(char c, uint8_t& result){
auto val = c - '0';
if (val >= 0 && val < 10){
result = val;
return true;
}
return false;
}
inline bool isDigit(char c){
auto val = c - '0';
return val >= 0 && val < 10;
}
vector<size_t> findAll(const string& data, const string& toSearch);
void removeAll(string& data, const string& toRemove);
vector<string> split(const string& data, char c);
bool isDigit(char c, uint8_t& result);
bool isDigit(char c);
Loading…
Cancel
Save