From a079870bca7831980c2ba278bab3ccd1d82e4cdd Mon Sep 17 00:00:00 2001 From: Torsten Dreyer Date: Sun, 20 Feb 2011 15:29:06 +0100 Subject: [PATCH] Add strutils::starts_with and strutils::ends_with --- simgear/misc/strutils.cxx | 13 +++++++++++++ simgear/misc/strutils.hxx | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/simgear/misc/strutils.cxx b/simgear/misc/strutils.cxx index cc56aa41..a81adc5c 100644 --- a/simgear/misc/strutils.cxx +++ b/simgear/misc/strutils.cxx @@ -200,5 +200,18 @@ namespace simgear { return reply.insert( 0, length-l, c ); } + bool + starts_with( const string & s, const string & substr ) + { + return s.find( substr ) == 0; + } + + bool + ends_with( const string & s, const string & substr ) + { + size_t n = s.rfind( substr ); + return (n != string::npos) && (n == s.length() - substr.length()); + } + } // end namespace strutils } // end namespace simgear diff --git a/simgear/misc/strutils.hxx b/simgear/misc/strutils.hxx index ea44d654..935e3d4a 100644 --- a/simgear/misc/strutils.hxx +++ b/simgear/misc/strutils.hxx @@ -97,6 +97,24 @@ namespace simgear { split( const std::string& s, const char* sep = 0, int maxsplit = 0 ); + + /** + * Test if a string starts with a string + * + * @param s The string to be tested + * @param substr The string to test + * @return True, if s starts with substr, False otherwise + */ + bool starts_with( const std::string & s, const std::string & substr ); + + /** + * Test if a string ends with a string + * + * @param s The string to be tested + * @param substr The string to test + * @return True, if s ends with substr, False otherwise + */ + bool ends_with( const std::string & s, const std::string & substr ); } // end namespace strutils } // end namespace simgear -- 2.39.5