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). */
|
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);
|
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>
|
template <class T>
|
||||||
bool StringToInteger(const AString & a_str, T & a_Num)
|
bool StringToInteger(const AString & a_str, T & a_Num)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user