OpenMS
Loading...
Searching...
No Matches
String.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- 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
12#include <OpenMS/OpenMSConfig.h>
13
14#include <string>
15#include <cstring>
16#include <vector>
17
18class QString;
19
20namespace OpenMS
21{
22 class DataValue;
23 template <typename FloatingPointType>
24 struct PrecisionWrapper;
32 class String :
33 public std::string
34 {
35public:
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
491namespace 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:34
A more convenient string class.
Definition String.h:34
String & operator+=(long unsigned int i)
Sum operator for an unsigned integer.
String(long long unsigned int i)
Constructor from an unsigned integer.
String & operator+=(short unsigned int i)
Sum operator for an unsigned integer.
const_reverse_iterator ConstReverseIterator
Const reverse Iterator.
Definition String.h:50
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 & operator+=(short int i)
Sum operator for an integer.
String(float f, bool full_precision=true)
Constructor from float (full_precision controls number of fractional digits, 3 digits when false,...
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 & operator+=(const char *s)
Sum operator for char*.
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 ...
String & operator+=(float f)
Sum operator for float.
reverse_iterator ReverseIterator
Reverse Iterator.
Definition String.h:48
String & unquote(char q='"', QuotingMethod method = ESCAPE)
Reverses changes made by the quote method.
Int64 toInt64() const
Conversion to Int64.
String & operator+=(int i)
Sum operator for an integer.
String & substitute(const String &from, const String &to)
Replaces all occurrences of the string from by the string to.
String prefix(SizeType length) const
returns the prefix of length length
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(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 & operator+=(double d)
Sum operator for double.
String(int i)
Constructor from an integer.
QString toQString() const
Conversion to Qt QString.
String & operator+=(unsigned int i)
Sum operator for an unsigned integer.
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)
String & remove(char what)
Remove all occurrences of the character what.
Int32 toInt32() const
Conversion to Int32.
String & reverse()
inverts the direction of the string
String & operator+=(long long unsigned int i)
Sum operator for an unsigned 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 & firstToUpper()
Converts the first letter of the string to uppercase.
String(short unsigned int i)
Constructor from an unsigned integer.
String & ensureLastChar(char end)
Makes sure the string ends with the character end.
String(const char *s)
Constructor from char*.
String operator+(double d) const
Sum operator for double.
String()
Default constructor.
String(String &&)=default
Move constructor.
bool hasSuffix(const String &string) const
true if String ends with string, false otherwise
String & trim()
removes whitespaces (space, tab, line feed, carriage return) at the beginning and the end of the stri...
bool isQuoted(char q='"')
Checks if the string is wrapped in quotation marks.
String & quote(char q='"', QuotingMethod method = ESCAPE)
Wraps the string 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+=(const std::string &s)
Sum operator for std::string.
String & operator=(String &&) &=default
Move assignment operator.
String(const String &)=default
Copy constructor.
String operator+(const std::string &s) const
Sum operator for std::string.
String & removeWhitespaces()
removes whitespaces (space, tab, line feed, carriage return)
String & simplify()
merges subsequent whitespaces to one blank character
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 & operator+=(const String &s)
Sum operator for String.
String & fillLeft(char c, UInt size)
Adds c on the left side until the size of the string is size.
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 double d)
Sum operator for long double.
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.
String & toLower()
Converts the string to lowercase.
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 & toUpper()
Converts the string to uppercase.
String operator+(long long unsigned int i) const
Sum operator for an unsigned integer.
String & operator=(const String &)=default
Assignment operator.
String & fillRight(char c, UInt size)
Adds c on the right side until the size of the string is size.
String & substitute(char from, char to)
Replaces all occurrences of the character from by the character to.
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 & operator+=(long int i)
Sum operator for an integer.
String & operator+=(char c)
Sum operator for char.
int32_t Int32
Signed integer type (32bit)
Definition Types.h:26
int64_t Int64
Signed integer type (64bit)
Definition Types.h:40
uint8_t Byte
Byte type.
Definition Types.h:81
int Int
Signed integer type.
Definition Types.h:72
unsigned int UInt
Unsigned integer type.
Definition Types.h:64
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
::size_t hash_value(OpenMS::String const &s)
STL namespace.
std::size_t operator()(OpenMS::String const &s) const
Definition String.h:495