StringUtils: Added string vector manipulation.
This commit is contained in:
parent
42162b5193
commit
40e231bc29
@ -905,3 +905,47 @@ bool SplitZeroTerminatedStrings(const AString & a_Strings, AStringVector & a_Out
|
||||
|
||||
|
||||
|
||||
|
||||
AStringVector MergeStringVectors(const AStringVector & a_Strings1, const AStringVector & a_Strings2)
|
||||
{
|
||||
// Initialize the resulting vector by the first vector:
|
||||
AStringVector res = a_Strings1;
|
||||
|
||||
// Add each item from strings2 that is not already present:
|
||||
for (auto item : a_Strings2)
|
||||
{
|
||||
if (std::find(res.begin(), res.end(), item) != res.end())
|
||||
{
|
||||
res.push_back(item);
|
||||
}
|
||||
} // for item - a_Strings2[]
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
AString StringsConcat(const AStringVector & a_Strings, char a_Separator)
|
||||
{
|
||||
// If the vector is empty, return an empty string:
|
||||
if (a_Strings.empty())
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
// Concatenate the strings in the vector:
|
||||
AString res;
|
||||
res.append(a_Strings[0]);
|
||||
for (auto itr = a_Strings.cbegin() + 1, end = a_Strings.cend(); itr != end; ++itr)
|
||||
{
|
||||
res.push_back(a_Separator);
|
||||
res.append(*itr);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -115,7 +115,16 @@ a_Output is first cleared and then each separate string is pushed back into a_Ou
|
||||
Returns true if there are at least two strings in a_Output (there was at least one \0 separator). */
|
||||
extern bool SplitZeroTerminatedStrings(const AString & a_Strings, AStringVector & a_Output);
|
||||
|
||||
/// Parses any integer type. Checks bounds and returns errors out of band.
|
||||
/** Merges the two vectors of strings, removing duplicate entries from the second vector.
|
||||
The resulting vector contains items from a_Strings1 first, then from a_Strings2.
|
||||
The order of items doesn't change, only the duplicates are removed.
|
||||
If a_Strings1 contains duplicates, the result will still contain those duplicates. */
|
||||
extern AStringVector MergeStringVectors(const AStringVector & a_Strings1, const AStringVector & a_Strings2);
|
||||
|
||||
/** Concatenates the specified strings into a single string, separated by the specified separator. */
|
||||
extern AString StringsConcat(const AStringVector & a_Strings, char a_Separator);
|
||||
|
||||
/** Parses any integer type. Checks bounds and returns errors out of band. */
|
||||
template <class T>
|
||||
bool StringToInteger(const AString & a_str, T & a_Num)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user