cmStringAlgorithms: Add cmStripWhitespace

Add a utility function to strip whitespace from a `string_view`. This is
identical to the existing `cmTrimWhitespace`, but does not allocate a
new `string`, instead returning the result as another `string_view`.
This commit is contained in:
Matthew Woehlke
2025-12-01 12:31:24 -05:00
committed by Brad King
parent 2ca58c5ac9
commit 1ec7201558
2 changed files with 24 additions and 0 deletions

View File

@@ -38,6 +38,24 @@ std::string cmTrimWhitespace(cm::string_view str)
return std::string(start, stop + 1);
}
cm::string_view cmStripWhitespace(cm::string_view str)
{
std::string::size_type const l = str.size();
std::string::size_type s = 0;
while (s < l && cmIsSpace(str[s])) {
++s;
}
if (s == l) {
return cm::string_view{};
}
std::string::size_type e = l - 1;
while (cmIsSpace(str[e])) {
--e;
}
return str.substr(s, e + 1 - s);
}
std::string cmRemoveQuotes(cm::string_view str)
{
// We process only strings that have two quotes at least.

View File

@@ -62,6 +62,12 @@ inline bool cmIsSpace(char ch)
/** Returns a string that has whitespace removed from the start and the end. */
std::string cmTrimWhitespace(cm::string_view str);
/**
* Returns a string view that has whitespace removed from the start and the
* end.
*/
cm::string_view cmStripWhitespace(cm::string_view str);
/** Returns a string that has quotes removed from the start and the end. */
std::string cmRemoveQuotes(cm::string_view str);