18 #include <boost/algorithm/string/replace.hpp>
30 std::istringstream str_stream(str);
31 std::vector<std::string> items;
32 std::copy(std::istream_iterator<std::string>(str_stream),
33 std::istream_iterator<std::string>(),
34 std::back_inserter(items));
38 std::list<std::string>
splitString(
const std::string& str,
char delim)
40 std::list<std::string> strList;
41 std::stringstream ss(str);
43 while (getline(ss, item, delim))
45 strList.push_back(item);
52 std::string stringToReplace)
54 boost::replace_all(stringToReplace, searchString,
replaceString);
55 return stringToReplace;
58 void trim(std::string& str,
char ch)
60 std::string::size_type pos = str.find_last_not_of(ch);
61 if (pos != std::string::npos)
64 pos = str.find_first_not_of(ch);
65 if (pos != std::string::npos)
72 str.erase(str.begin(), str.end());
79 str.erase(std::unique(str.begin(),
81 [](
char a,
char b) { return a ==
' ' && b ==
' '; }),
85 std::string
format(
const char* format_str, ...)
88 va_start(args, format_str);
91 va_copy(args_tmp, args);
92 int char_length = std::vsnprintf(
nullptr, 0, format_str, args_tmp);
95 std::vector<char> buffer(char_length + 1);
96 vsnprintf(buffer.data(), buffer.size(), format_str, args);
99 return std::string(buffer.data());
104 static constexpr
char charset[] =
105 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
107 static const auto seed =
static_cast<std::mt19937::result_type
>(
108 std::chrono::system_clock::now().time_since_epoch().count());
109 static std::mt19937 generator{seed};
110 static std::uniform_int_distribution<unsigned short> distribution(
111 0,
sizeof(charset) - 2);
113 std::string s(length, 0);
115 begin(s), length, [&]() {
return charset[distribution(generator)]; });
121 std::string
const& input_name)
123 std::string result_name = input_name;
124 std::size_t count = 1;
125 while (std::find(existing_names.cbegin(),
126 existing_names.cend(),
127 result_name) != existing_names.end())
130 result_name = input_name +
"-" + std::to_string(count);
void simplify(std::string &str)
std::string randomString(std::size_t const length)
Returns a random string of the given length containing just a-z,A-Z,0-9.
std::string getUniqueName(std::vector< std::string > const &existing_names, std::string const &input_name)
Append '-' and a number such that the name is unique.
std::string replaceString(const std::string &searchString, const std::string &replaceString, std::string stringToReplace)
void trim(std::string &str, char ch)
std::string format(const char *format_str,...)
std::vector< std::string > splitString(std::string const &str)
void copy(PETScVector const &x, PETScVector &y)