1 /* 2 * Created by Martin on 25/07/2017. 3 * 4 * Distributed under the Boost Software License, Version 1.0. (See accompanying 5 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 */ 7 #ifndef TWOBLUECUBES_CATCH_STRING_MANIP_H_INCLUDED 8 #define TWOBLUECUBES_CATCH_STRING_MANIP_H_INCLUDED 9 10 #include "catch_stringref.h" 11 12 #include <string> 13 #include <iosfwd> 14 #include <vector> 15 16 namespace Catch { 17 18 bool startsWith( std::string const& s, std::string const& prefix ); 19 bool startsWith( std::string const& s, char prefix ); 20 bool endsWith( std::string const& s, std::string const& suffix ); 21 bool endsWith( std::string const& s, char suffix ); 22 bool contains( std::string const& s, std::string const& infix ); 23 void toLowerInPlace( std::string& s ); 24 std::string toLower( std::string const& s ); 25 //! Returns a new string without whitespace at the start/end 26 std::string trim( std::string const& str ); 27 //! Returns a substring of the original ref without whitespace. Beware lifetimes! 28 StringRef trim(StringRef ref); 29 30 // !!! Be aware, returns refs into original string - make sure original string outlives them 31 std::vector<StringRef> splitStringRef( StringRef str, char delimiter ); 32 bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ); 33 34 struct pluralise { 35 pluralise( std::size_t count, std::string const& label ); 36 37 friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ); 38 39 std::size_t m_count; 40 std::string m_label; 41 }; 42 } 43 44 #endif // TWOBLUECUBES_CATCH_STRING_MANIP_H_INCLUDED 45 46