summaryrefslogtreecommitdiff
path: root/src/string.cpp
diff options
context:
space:
mode:
authorrubidium42 <rubidium@openttd.org>2021-04-27 22:02:40 +0200
committerrubidium42 <rubidium42@users.noreply.github.com>2021-05-13 23:13:17 +0200
commit16437b7c0dc2cf8c0ab32e375df7b2712feff73d (patch)
tree6714beec528c999b11adfc9a4959abb79942ab3e /src/string.cpp
parent02fdb5b210ede022cb921e869cdb34758ee5299e (diff)
downloadopenttd-16437b7c0dc2cf8c0ab32e375df7b2712feff73d.tar.xz
Codechange: move client name in settings to std::string
Diffstat (limited to 'src/string.cpp')
-rw-r--r--src/string.cpp37
1 files changed, 7 insertions, 30 deletions
diff --git a/src/string.cpp b/src/string.cpp
index 38f7d1bd1..a76006fe8 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -326,19 +326,10 @@ bool StrValid(const char *str, const char *last)
* When there are spaces at the begin, the whole string is moved forward.
* @param str The string to perform the in place left trimming on.
*/
-static void StrLeftTrimInPlace(char *str)
+static void StrLeftTrimInPlace(std::string &str)
{
- if (StrEmpty(str)) return;
-
- char *first_non_space = str;
- while (*first_non_space == ' ') first_non_space++;
-
- if (first_non_space == str) return;
-
- /* The source will reach '\0' first, but set the '\0' on the destination afterwards. */
- char *dst = str;
- for (char *src = first_non_space; *src != '\0'; dst++, src++) *dst = *src;
- *dst = '\0';
+ size_t pos = str.find_first_not_of(' ');
+ str.erase(0, pos);
}
/**
@@ -347,24 +338,10 @@ static void StrLeftTrimInPlace(char *str)
* When there are spaces at the end, the '\0' will be moved forward.
* @param str The string to perform the in place left trimming on.
*/
-static void StrRightTrimInPlace(char *str)
+static void StrRightTrimInPlace(std::string &str)
{
- if (StrEmpty(str)) return;
-
- char *end = str;
- while (*end != '\0') end++;
-
- char *last_non_space = end - 1;
- while (last_non_space >= str && *last_non_space == ' ') last_non_space--;
-
- /* The last non space points to the last character of the string that is not
- * a space. For a string with only spaces or an empty string this would be
- * the position before the begin of the string. The previous search ensures
- * that this location before the string is not read.
- * In any case, the character after the last non space character will be
- * either a space or the existing termination, so it can be set to '\0'.
- */
- last_non_space[1] = '\0';
+ size_t pos = str.find_last_not_of(' ');
+ if (pos != std::string::npos) str.erase(pos + 1);
}
/**
@@ -374,7 +351,7 @@ static void StrRightTrimInPlace(char *str)
* and when there are spaces at the back the '\0' termination is moved.
* @param str The string to perform the in place trimming on.
*/
-void StrTrimInPlace(char *str)
+void StrTrimInPlace(std::string &str)
{
StrLeftTrimInPlace(str);
StrRightTrimInPlace(str);