OpenMS
String.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Timo Sachsenberg$
6 // $Authors: Marc Sturm $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
11 #include <OpenMS/CONCEPT/Types.h>
12 #include <OpenMS/OpenMSConfig.h>
13 
14 #include <string>
15 #include <cstring>
16 #include <vector>
17 
18 class QString;
19 
20 namespace OpenMS
21 {
22  class DataValue;
23  template <typename FloatingPointType>
24  struct PrecisionWrapper;
32  class String :
33  public std::string
34  {
35 public:
36 
38  OPENMS_DLLAPI static const String EMPTY;
39 
44  typedef iterator Iterator;
46  typedef const_iterator ConstIterator;
48  typedef reverse_iterator ReverseIterator;
50  typedef const_reverse_iterator ConstReverseIterator;
52  typedef size_type SizeType;
53 
56 
58 
63  OPENMS_DLLAPI String();
65  OPENMS_DLLAPI String(const String&) = default;
67  OPENMS_DLLAPI String(String&&) = default;
69  OPENMS_DLLAPI String(const std::string& s);
71  OPENMS_DLLAPI String(const std::string_view& sv);
73  OPENMS_DLLAPI String(const QString& s);
75  OPENMS_DLLAPI String(const char* s);
77  OPENMS_DLLAPI String(const char c);
79  OPENMS_DLLAPI String(const char* s, SizeType length);
81  OPENMS_DLLAPI String(size_t len, char c);
83  template <class InputIterator>
84  String(InputIterator first, InputIterator last) :
85  std::string(first, last)
86  {
87  }
88 
90  OPENMS_DLLAPI String(int i);
92  OPENMS_DLLAPI String(unsigned int i);
94  OPENMS_DLLAPI String(short int i);
96  OPENMS_DLLAPI String(short unsigned int i);
98  OPENMS_DLLAPI String(long int i);
100  OPENMS_DLLAPI String(long unsigned int i);
102  OPENMS_DLLAPI String(long long unsigned int i);
104  OPENMS_DLLAPI String(long long signed int i);
106  OPENMS_DLLAPI String(float f, bool full_precision = true);
108  OPENMS_DLLAPI String(double d, bool full_precision = true);
110  OPENMS_DLLAPI String(long double ld, bool full_precision = true);
112  OPENMS_DLLAPI String(const DataValue& d, bool full_precision = true);
113 
115 
120  OPENMS_DLLAPI bool hasPrefix(const String& string) const;
121 
123  OPENMS_DLLAPI bool hasSuffix(const String& string) const;
124 
126  OPENMS_DLLAPI bool hasSubstring(const String& string) const;
127 
129  OPENMS_DLLAPI bool has(Byte byte) const;
131 
133  OPENMS_DLLAPI String& operator=(const String&) = default;
135  OPENMS_DLLAPI String& operator=(String&&) & = default;
136 
145  OPENMS_DLLAPI String prefix(SizeType length) const;
146 
152  OPENMS_DLLAPI String suffix(SizeType length) const;
153 
160  OPENMS_DLLAPI String prefix(Int length) const;
161 
168  OPENMS_DLLAPI String suffix(Int length) const;
169 
175  OPENMS_DLLAPI String prefix(char delim) const;
176 
182  OPENMS_DLLAPI String suffix(char delim) const;
183 
196  OPENMS_DLLAPI String substr(size_t pos = 0, size_t n = npos) const;
197 
205  OPENMS_DLLAPI String chop(Size n) const;
206 
208 
209 
217  OPENMS_DLLAPI String& reverse();
218 
220  OPENMS_DLLAPI String& trim();
221 
229  OPENMS_DLLAPI bool isQuoted(char q = '"');
230 
238  OPENMS_DLLAPI String& quote(char q = '"', QuotingMethod method = ESCAPE);
239 
249  OPENMS_DLLAPI String& unquote(char q = '"', QuotingMethod method = ESCAPE);
250 
252  OPENMS_DLLAPI String& simplify();
253 
255  OPENMS_DLLAPI String& fillLeft(char c, UInt size);
256 
258  OPENMS_DLLAPI String& fillRight(char c, UInt size);
259 
261  OPENMS_DLLAPI String& toUpper();
262 
264  OPENMS_DLLAPI String& toLower();
265 
267  OPENMS_DLLAPI String& firstToUpper();
268 
270  OPENMS_DLLAPI String& substitute(char from, char to);
271 
273  OPENMS_DLLAPI String& substitute(const String& from, const String& to);
274 
276  OPENMS_DLLAPI String& remove(char what);
277 
279  OPENMS_DLLAPI String& ensureLastChar(char end);
280 
282  OPENMS_DLLAPI String& removeWhitespaces();
284 
288 
289 
298  OPENMS_DLLAPI Int toInt() const;
299 
308  OPENMS_DLLAPI Int32 toInt32() const;
309 
318  OPENMS_DLLAPI Int64 toInt64() const;
319 
325  OPENMS_DLLAPI float toFloat() const;
326 
332  OPENMS_DLLAPI double toDouble() const;
333 
335  OPENMS_DLLAPI QString toQString() const;
336 
338 
343  OPENMS_DLLAPI String operator+(int i) const;
345  OPENMS_DLLAPI String operator+(unsigned int i) const;
347  OPENMS_DLLAPI String operator+(short int i) const;
349  OPENMS_DLLAPI String operator+(short unsigned int i) const;
351  OPENMS_DLLAPI String operator+(long int i) const;
353  OPENMS_DLLAPI String operator+(long unsigned int i) const;
355  OPENMS_DLLAPI String operator+(long long unsigned int i) const;
357  OPENMS_DLLAPI String operator+(float f) const;
359  OPENMS_DLLAPI String operator+(double d) const;
361  OPENMS_DLLAPI String operator+(long double ld) const;
363  OPENMS_DLLAPI String operator+(char c) const;
365  OPENMS_DLLAPI String operator+(const char* s) const;
367  OPENMS_DLLAPI String operator+(const String& s) const;
369  OPENMS_DLLAPI String operator+(const std::string& s) const;
371 
376  OPENMS_DLLAPI String& operator+=(int i);
378  OPENMS_DLLAPI String& operator+=(unsigned int i);
380  OPENMS_DLLAPI String& operator+=(short int i);
382  OPENMS_DLLAPI String& operator+=(short unsigned int i);
384  OPENMS_DLLAPI String& operator+=(long int i);
386  OPENMS_DLLAPI String& operator+=(long unsigned int i);
388  OPENMS_DLLAPI String& operator+=(long long unsigned int i);
390  OPENMS_DLLAPI String& operator+=(float f);
392  OPENMS_DLLAPI String& operator+=(double d);
394  OPENMS_DLLAPI String& operator+=(long double d);
396  OPENMS_DLLAPI String& operator+=(char c);
398  OPENMS_DLLAPI String& operator+=(const char* s);
400  OPENMS_DLLAPI String& operator+=(const String& s);
402  OPENMS_DLLAPI String& operator+=(const std::string& s);
404 
406  OPENMS_DLLAPI static String random(UInt length);
407 
409  OPENMS_DLLAPI static String number(double d, UInt n);
410 
416  OPENMS_DLLAPI static String numberLength(double d, UInt n);
417 
434  OPENMS_DLLAPI bool split(const char splitter, std::vector<String>& substrings, bool quote_protect = false) const;
435 
447  OPENMS_DLLAPI bool split(const String& splitter, std::vector<String>& substrings) const;
448 
463  OPENMS_DLLAPI bool split_quoted(const String& splitter, std::vector<String>& substrings,
464  char q = '"', QuotingMethod method = ESCAPE) const;
465 
471  template <class StringIterator>
472  void concatenate(StringIterator first, StringIterator last, const String& glue = "")
473  {
474  //empty container
475  if (first == last)
476  {
477  std::string::clear();
478  return;
479  }
480 
481  std::string::operator=(*first);
482  for (StringIterator it = ++first; it != last; ++it)
483  {
484  std::string::operator+=(glue + (*it));
485  }
486  }
487  };
488  OPENMS_DLLAPI ::size_t hash_value(OpenMS::String const& s);
489 } // namespace OpenMS
490 
491 namespace std
492 {
493  template <> struct hash<OpenMS::String> //hash for String
494  {
495  std::size_t operator()( OpenMS::String const& s) const
496  {
497  return std::hash<string>()(static_cast<string>(s));
498  }
499  };
500 } // namespace std
Class to hold strings, numeric values, lists of strings and lists of numeric values.
Definition: DataValue.h:33
A more convenient string class.
Definition: String.h:34
String(long long unsigned int i)
Constructor from an unsigned integer.
String & substitute(const String &from, const String &to)
Replaces all occurrences of the string from by the string to.
String & operator+=(int i)
Sum operator for an integer.
const_reverse_iterator ConstReverseIterator
Const reverse Iterator.
Definition: String.h:50
String & fillRight(char c, UInt size)
Adds c on the right side until the size of the string is size.
String substr(size_t pos=0, size_t n=npos) const
Wrapper for the STL substr() method. Returns a String object with its contents initialized to a subst...
String(float f, bool full_precision=true)
Constructor from float (full_precision controls number of fractional digits, 3 digits when false,...
String & operator+=(short unsigned int i)
Sum operator for an unsigned integer.
bool hasPrefix(const String &string) const
true if String begins with string, false otherwise
bool split_quoted(const String &splitter, std::vector< String > &substrings, char q='"', QuotingMethod method = ESCAPE) const
Splits a string into substrings using splitter (the whole string) as delimiter, but does not split wi...
String & simplify()
merges subsequent whitespaces to one blank character
String(long int i)
Constructor from an integer.
String chop(Size n) const
Returns a substring where n characters were removed from the end of the string.
String(const std::string_view &sv)
Constructor from std::string_view.
bool hasSubstring(const String &string) const
true if String contains the string, false otherwise
String(const DataValue &d, bool full_precision=true)
Constructor from DataValue (full_precision controls number of fractional digits for all double types ...
reverse_iterator ReverseIterator
Reverse Iterator.
Definition: String.h:48
String & remove(char what)
Remove all occurrences of the character what.
String & operator+=(long int i)
Sum operator for an integer.
String & operator+=(const char *s)
Sum operator for char*.
Int64 toInt64() const
Conversion to Int64.
String & operator+=(double d)
Sum operator for double.
String prefix(SizeType length) const
returns the prefix of length length
String & firstToUpper()
Converts the first letter of the string to uppercase.
String prefix(char delim) const
returns the prefix up to the first occurrence of char delim (excluding it)
iterator Iterator
Iterator.
Definition: String.h:44
bool has(Byte byte) const
true if String contains the byte, false otherwise
Int toInt() const
Conversion to Int.
String(const char c)
Constructor from a char.
String & operator=(const String &)=default
Assignment operator.
String & operator+=(long unsigned int i)
Sum operator for an unsigned integer.
String & operator+=(unsigned int i)
Sum operator for an unsigned integer.
String(long long signed int i)
Constructor from an unsigned integer.
double toDouble() const
Conversion to double.
String(const std::string &s)
Constructor from std::string.
String & removeWhitespaces()
removes whitespaces (space, tab, line feed, carriage return)
String(int i)
Constructor from an integer.
QString toQString() const
Conversion to Qt QString.
String & reverse()
inverts the direction of the string
String operator+(char c) const
Sum operator for char.
String operator+(int i) const
Sum operator for an integer.
String operator+(long int i) const
Sum operator for an integer.
const_iterator ConstIterator
Const Iterator.
Definition: String.h:46
QuotingMethod
How to handle embedded quotes when quoting strings.
Definition: String.h:55
@ ESCAPE
Definition: String.h:55
@ DOUBLE
Definition: String.h:55
@ NONE
Definition: String.h:55
bool split(const char splitter, std::vector< String > &substrings, bool quote_protect=false) const
Splits a string into substrings using splitter as delimiter.
String(const char *s, SizeType length)
Constructor from char* (only length characters)
Int32 toInt32() const
Conversion to Int32.
String & unquote(char q='"', QuotingMethod method = ESCAPE)
Reverses changes made by the quote method.
String & operator+=(short int i)
Sum operator for an integer.
String operator+(const char *s) const
Sum operator for char*.
String operator+(short unsigned int i) const
Sum operator for an unsigned integer.
String(short unsigned int i)
Constructor from an unsigned integer.
String & trim()
removes whitespaces (space, tab, line feed, carriage return) at the beginning and the end of the stri...
String(const char *s)
Constructor from char*.
String operator+(double d) const
Sum operator for double.
String()
Default constructor.
String(String &&)=default
Move constructor.
String & substitute(char from, char to)
Replaces all occurrences of the character from by the character to.
String & toLower()
Converts the string to lowercase.
bool hasSuffix(const String &string) const
true if String ends with string, false otherwise
bool isQuoted(char q='"')
Checks if the string is wrapped in quotation marks.
static String numberLength(double d, UInt n)
Returns a string with at maximum n characters for d.
String operator+(float f) const
Sum operator for float.
String & operator+=(char c)
Sum operator for char.
String & fillLeft(char c, UInt size)
Adds c on the left side until the size of the string is size.
String & operator+=(long double d)
Sum operator for long double.
String & operator+=(float f)
Sum operator for float.
String(const String &)=default
Copy constructor.
String operator+(const std::string &s) const
Sum operator for std::string.
String & quote(char q='"', QuotingMethod method = ESCAPE)
Wraps the string in quotation marks.
size_type SizeType
UInt type.
Definition: String.h:52
String prefix(Int length) const
returns the prefix of length length
String operator+(long unsigned int i) const
Sum operator for an unsigned integer.
String suffix(char delim) const
returns the suffix up to the last occurrence of char delim (excluding it)
String(double d, bool full_precision=true)
Constructor from double (full_precision controls number of fractional digits, 3 digits when false,...
String(size_t len, char c)
Constructor from char (repeats the char len times)
String(InputIterator first, InputIterator last)
Constructor from a char range.
Definition: String.h:84
String(long double ld, bool full_precision=true)
Constructor from long double (full_precision controls number of fractional digits,...
String(long unsigned int i)
Constructor from an unsigned integer.
static String random(UInt length)
returns a random string of the given length. It consists of [0-9a-zA-Z]
String & ensureLastChar(char end)
Makes sure the string ends with the character end.
String operator+(long double ld) const
Sum operator for long double.
String suffix(SizeType length) const
returns the suffix of length length
String & operator+=(long long unsigned int i)
Sum operator for an unsigned integer.
String operator+(short int i) const
Sum operator for an integer.
String operator+(const String &s) const
Sum operator for String.
String suffix(Int length) const
returns the suffix of length length
String(short int i)
Constructor from an integer.
bool split(const String &splitter, std::vector< String > &substrings) const
Splits a string into substrings using splitter (the whole string) as delimiter.
String operator+(unsigned int i) const
Sum operator for an unsigned integer.
static String number(double d, UInt n)
returns a string for d with exactly n decimal places
static const String EMPTY
Empty string for comparisons.
Definition: String.h:38
String(unsigned int i)
Constructor from an unsigned integer.
float toFloat() const
Conversion to float.
String & operator=(String &&) &=default
Move assignment operator.
String operator+(long long unsigned int i) const
Sum operator for an unsigned integer.
String & operator+=(const std::string &s)
Sum operator for std::string.
String(const QString &s)
Constructor from Qt QString.
void concatenate(StringIterator first, StringIterator last, const String &glue="")
Concatenates all elements from first to last-1 and inserts glue between the elements.
Definition: String.h:472
String & toUpper()
Converts the string to uppercase.
String & operator+=(const String &s)
Sum operator for String.
OPENMS_BYTE_TYPE Byte
Byte type.
Definition: Types.h:85
int Int
Signed integer type.
Definition: Types.h:76
OPENMS_INT32_TYPE Int32
Signed integer type (32bit)
Definition: Types.h:30
OPENMS_INT64_TYPE Int64
Signed integer type (64bit)
Definition: Types.h:44
unsigned int UInt
Unsigned integer type.
Definition: Types.h:68
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:101
const double c
Definition: Constants.h:188
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22
std::size_t hash_value(const DPosition< N, T > &b)
Definition: HashGrid.h:497
std::size_t operator()(OpenMS::String const &s) const
Definition: String.h:495