ARB
arb_stdstr.h
Go to the documentation of this file.
1 // =============================================================== //
2 // //
3 // File : arb_stdstr.h //
4 // Purpose : inlined string functions using std::string //
5 // //
6 // Coded by Ralf Westram (coder@reallysoft.de) in June 2002 //
7 // Institute of Microbiology (Technical University Munich) //
8 // http://www.arb-home.de/ //
9 // //
10 // =============================================================== //
11 
12 // Note: code using char* should go to arb_str.h
13 // or ../CORE/arb_string.h
14 
15 #ifndef ARB_STDSTR_H
16 #define ARB_STDSTR_H
17 
18 #ifndef _GLIBCXX_STRING
19 #include <string>
20 #endif
21 
22 inline bool beginsWith(const std::string& str, const std::string& start) {
23  return str.find(start) == 0;
24 }
25 
26 inline bool endsWith(const std::string& str, const std::string& postfix) {
27  size_t slen = str.length();
28  size_t plen = postfix.length();
29 
30  if (plen>slen) { return false; }
31  return str.substr(slen-plen) == postfix;
32 }
33 
34 class NoCaseCmp { // can be used as case insensitive key_compare for standard containers
35  static bool less_nocase(char c1, char c2) { return toupper(c1) < toupper(c2); }
36  static bool nonequal_nocase(char c1, char c2) { return toupper(c1) != toupper(c2); }
37 public:
38  NoCaseCmp() {}
39 
40  bool operator()(const std::string& s1, const std::string& s2) const {
41  return lexicographical_compare(s1.begin(), s1.end(),
42  s2.begin(), s2.end(),
43  less_nocase);
44  }
45 
46  static bool has_prefix(const std::string& s1, const std::string& s2) {
47  // return true if s1 starts with prefix s2
48  return
49  s1.length() >= s2.length() &&
50  !lexicographical_compare(s1.begin(), s1.begin()+s2.length(),
51  s2.begin(), s2.end(),
52  nonequal_nocase);
53  }
54 };
55 
56 
57 #else
58 #error arb_stdstr.h included twice
59 #endif // ARB_STDSTR_H
return string(buffer, length)
static HelixNrInfo * start
static bool has_prefix(const std::string &s1, const std::string &s2)
Definition: arb_stdstr.h:46
bool beginsWith(const std::string &str, const std::string &start)
Definition: arb_stdstr.h:22
bool endsWith(const std::string &str, const std::string &postfix)
Definition: arb_stdstr.h:26
bool operator()(const std::string &s1, const std::string &s2) const
Definition: arb_stdstr.h:40