diff --git a/BaseLib/StringTools.cpp b/BaseLib/StringTools.cpp index a881a25c0d37fd8195a622a4a454de5291e2abab..0c00e867c1bfc7f360413d8274537330a0f69bd2 100644 --- a/BaseLib/StringTools.cpp +++ b/BaseLib/StringTools.cpp @@ -119,4 +119,19 @@ std::string randomString(std::size_t const length) return s; } +std::string getUniqueName(std::vector<std::string> const& existing_names, + std::string const& input_name) +{ + std::string result_name = input_name; + std::size_t count = 1; + while (std::find(existing_names.cbegin(), + existing_names.cend(), + result_name) != existing_names.end()) + { + count++; + result_name = input_name + "-" + std::to_string(count); + } + return result_name; +} + } // end namespace BaseLib diff --git a/BaseLib/StringTools.h b/BaseLib/StringTools.h index 23be7a0415e6ec9ef8c22f329b5b24347faf557a..dfe5487710eb9c230ec280ed58bd5966555f9e59 100644 --- a/BaseLib/StringTools.h +++ b/BaseLib/StringTools.h @@ -75,4 +75,7 @@ void simplify(std::string &str); //! Returns a random string of the given length containing just a-z,A-Z,0-9 std::string randomString(std::size_t length); +//! Append '-' and a number such that the name is unique. +std::string getUniqueName(std::vector<std::string> const& existing_names, + std::string const& input_name); } // end namespace BaseLib