mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
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:
committed by
Brad King
parent
2ca58c5ac9
commit
1ec7201558
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user