string Class Reference

A class for handling character strings derived from std::string. More...

Inheritance diagram for string:
Collaboration diagram for string:

Classes

struct  hash
 Deprecated hashing functor - use hasher. More...
 
struct  hasher
 Hashing functor for string and derived string classes. More...
 

Public Member Functions

 string ()=default
 Default construct. More...
 
 string (const std::string &str)
 Copy construct from std::string. More...
 
 string (std::string &&str)
 Move construct from std::string. More...
 
 string (const char *str)
 Construct as copy of character array. More...
 
 string (const char *str, const size_type len)
 Construct as copy with a maximum number of characters. More...
 
 string (const char c)
 Construct from a single character. More...
 
 string (const size_type len, const char c)
 Construct fill copies of a single character. More...
 
 string (Istream &is)
 Construct from Istream. More...
 
bool match (const std::string &text) const
 Test for equality. More...
 
stringreplace (const std::string &s1, const std::string &s2, size_type pos=0)
 Replace first occurrence of sub-string s1 with s2, beginning at pos. More...
 
stringreplaceAll (const std::string &s1, const std::string &s2, size_type pos=0)
 Replace all occurrences of sub-string s1 with s2, beginning at pos in the string. More...
 
stringreplaceAny (const std::string &s1, const char c2, size_type pos=0)
 Replace any occurrence of s1 characters with c2, beginning at pos in the string. More...
 
stringexpand (const bool allowEmpty=false)
 Inplace expand initial tags, tildes, and all occurrences of environment variables as per stringOps::expand. More...
 
bool removeRepeated (const char character)
 Remove repeated characters. More...
 
bool removeStart (const std::string &text)
 Remove the given text from the start of the string. More...
 
bool removeStart (const char c)
 Remove leading character, unless string is a single character. More...
 
bool removeEnd (const std::string &text)
 Remove the given text from the end of the string. More...
 
bool removeEnd (const char c)
 Remove trailing character, unless string is a single character. More...
 
void swap (std::string &str)
 Swap contents. Self-swapping is a no-op. More...
 
bool operator() (const std::string &text) const
 Test for equality. Allows use as a predicate. More...
 
bool contains (char c) const noexcept
 True if string contains given character (cf. C++23) More...
 
bool contains (const std::string &s) const noexcept
 True if string contains given [string view] substring (cf. C++23) More...
 
bool contains (const char *s) const
 True if string contains given substring (cf. C++23) More...
 
bool starts_with (char c) const
 True if string starts with given character (cf. C++20) More...
 
bool starts_with (const std::string &s) const
 True if string starts with given [string view] prefix (C++20) More...
 
bool starts_with (const char *s) const
 True if string starts with given prefix (C++20) More...
 
bool ends_with (char c) const
 True if string ends with given character (cf. C++20) More...
 
bool ends_with (const std::string &s) const
 True if string ends with given [string view] suffix (cf. C++20) More...
 
bool ends_with (const char *s) const
 True if string ends with given suffix (cf. C++20) More...
 
size_type count (const char c) const
 Count the number of occurrences of the specified character in the string. More...
 
bool startsWith (const std::string &s) const
 Deprecated(2019-11) More...
 
bool endsWith (const std::string &s) const
 Deprecated(2019-11) More...
 
bool removeTrailing (const char c)
 Deprecated(2019-11) More...
 

Static Public Member Functions

static std::string::size_type length (const char *s)
 Length of the character sequence (with nullptr protection) More...
 
static std::string::size_type length (const std::string &s)
 The length of the string. More...
 
template<class StringType >
static bool valid (const std::string &str)
 Does the string contain valid characters only? More...
 
template<class StringType >
static bool stripInvalid (std::string &str)
 Strip invalid characters from the given string. More...
 
template<class StringType >
static StringType validate (const std::string &str)
 Return a valid String from the given string. More...
 

Static Public Attributes

static const char *const typeName = "string"
 The type name "string". More...
 
static int debug
 The debug flag. More...
 
static const string null
 An empty string. More...
 

Protected Member Functions

std::string::size_type find_ext () const
 Find position of a file extension dot, return npos on failure. More...
 
word ext () const
 Return file name extension (part after last .) More...
 
bool ext (const word &ending)
 Append a '.' and the ending. More...
 
bool has_ext () const
 Return true if it has an extension or simply ends with a '.'. More...
 
bool has_ext (const char *ending) const
 Return true if the extension is the same as the given ending. More...
 
bool has_ext (const std::string &ending) const
 Return true if the extension is the same as the given ending. More...
 
bool has_ext (const wordRe &ending) const
 Return true if the extension matches the given ending. More...
 
bool remove_path ()
 Remove leading path, return true if string changed. More...
 
bool remove_ext ()
 Remove extension, return true if string changed. More...
 

Static Protected Member Functions

static std::string::size_type find_ext (const std::string &str)
 Find position of a file extension dot, return npos on failure. More...
 
template<class PrimitiveType >
static std::string::size_type string_printf (std::string &output, const char *fmt, const PrimitiveType &val)
 A printf-style formatter for a primitive. More...
 
template<class PrimitiveType >
static std::string::size_type string_printf (std::string &output, const std::string &fmt, const PrimitiveType &val)
 A printf-style formatter for a primitive. More...
 

Detailed Description

A class for handling character strings derived from std::string.

Strings may contain any characters and therefore are delimited by quotes for IO : "any list of characters".

Used as a base class for word and fileName.

See also
Foam::findEtcFile() for information about the site/user OpenFOAM configuration directory
Source files

Definition at line 72 of file string.H.

Constructor & Destructor Documentation

◆ string() [1/8]

string ( )
default

Default construct.

◆ string() [2/8]

string ( const std::string &  str)
inline

Copy construct from std::string.

Definition at line 110 of file stringI.H.

◆ string() [3/8]

string ( std::string &&  str)
inline

Move construct from std::string.

Definition at line 116 of file stringI.H.

◆ string() [4/8]

string ( const char *  str)
inline

Construct as copy of character array.

Definition at line 122 of file stringI.H.

◆ string() [5/8]

string ( const char *  str,
const size_type  len 
)
inline

Construct as copy with a maximum number of characters.

Definition at line 128 of file stringI.H.

◆ string() [6/8]

string ( const char  c)
inlineexplicit

Construct from a single character.

Definition at line 134 of file stringI.H.

◆ string() [7/8]

string ( const size_type  len,
const char  c 
)
inline

Construct fill copies of a single character.

Definition at line 140 of file stringI.H.

◆ string() [8/8]

string ( Istream is)
explicit

Construct from Istream.

Definition at line 28 of file stringIO.C.

Member Function Documentation

◆ find_ext() [1/2]

std::string::size_type find_ext ( const std::string &  str)
inlinestaticprotected

Find position of a file extension dot, return npos on failure.

A wrapped version of find_last_of("./") with additional logic.

Definition at line 24 of file stringI.H.

◆ find_ext() [2/2]

std::string::size_type find_ext ( ) const
inlineprotected

Find position of a file extension dot, return npos on failure.

A wrapped version of find_last_of("./") with additional logic.

Definition at line 37 of file stringI.H.

Referenced by string::ext().

Here is the caller graph for this function:

◆ string_printf() [1/2]

std::string::size_type string_printf ( std::string &  output,
const char *  fmt,
const PrimitiveType &  val 
)
staticprotected

A printf-style formatter for a primitive.

Definition at line 29 of file stringTemplates.C.

References n, and Foam::output().

Here is the call graph for this function:

◆ string_printf() [2/2]

std::string::size_type string_printf ( std::string &  output,
const std::string &  fmt,
const PrimitiveType &  val 
)
staticprotected

A printf-style formatter for a primitive.

Definition at line 57 of file stringTemplates.C.

References Foam::output().

Here is the call graph for this function:

◆ ext() [1/2]

Foam::word ext ( ) const
protected

Return file name extension (part after last .)

Definition at line 38 of file string.C.

References string::find_ext().

Referenced by word::ext(), fileName::ext(), word::replace_ext(), and fileName::replace_ext().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ext() [2/2]

bool ext ( const word ending)
protected

Append a '.' and the ending.

The '.' and ending will not be added when the ending is empty, or when the object was or ended with a '/'.

Returns
True if append occurred.

Definition at line 51 of file string.C.

References append().

Here is the call graph for this function:

◆ has_ext() [1/4]

bool has_ext ( ) const
inlineprotected

Return true if it has an extension or simply ends with a '.'.

Definition at line 43 of file stringI.H.

Referenced by word::hasExt(), and fileName::hasExt().

Here is the caller graph for this function:

◆ has_ext() [2/4]

bool has_ext ( const char *  ending) const
inlineprotected

Return true if the extension is the same as the given ending.

No proper nullptr protection.

Definition at line 49 of file stringI.H.

◆ has_ext() [3/4]

bool has_ext ( const std::string &  ending) const
inlineprotected

Return true if the extension is the same as the given ending.

Definition at line 64 of file stringI.H.

◆ has_ext() [4/4]

bool has_ext ( const wordRe ending) const
protected

Return true if the extension matches the given ending.

Definition at line 74 of file string.C.

References wordRe::isLiteral(), and wordRe::match().

Here is the call graph for this function:

◆ remove_path()

bool remove_path ( )
inlineprotected

Remove leading path, return true if string changed.

Definition at line 79 of file stringI.H.

References erase().

Referenced by fileName::removePath().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ remove_ext()

bool remove_ext ( )
inlineprotected

Remove extension, return true if string changed.

Definition at line 93 of file stringI.H.

References erase().

Referenced by word::removeExt(), fileName::removeExt(), word::replace_ext(), and fileName::replace_ext().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ length() [1/2]

static std::string::size_type length ( const char *  s)
inlinestatic

◆ length() [2/2]

static std::string::size_type length ( const std::string &  s)
inlinestatic

The length of the string.

Definition at line 266 of file string.H.

References s.

◆ valid()

bool valid ( const std::string &  str)
inlinestatic

Does the string contain valid characters only?

Definition at line 149 of file stringI.H.

◆ stripInvalid()

bool stripInvalid ( std::string &  str)
inlinestatic

Strip invalid characters from the given string.

Definition at line 164 of file stringI.H.

References Foam::constant::universal::c.

◆ validate()

StringType validate ( const std::string &  str)
inlinestatic

Return a valid String from the given string.

Definition at line 193 of file stringI.H.

References Foam::constant::universal::c.

◆ match()

bool match ( const std::string &  text) const
inline

Test for equality.

Returns
True when strings match literally.

Definition at line 217 of file stringI.H.

Referenced by solutionControl::applyToField().

Here is the caller graph for this function:

◆ replace()

Foam::string & replace ( const std::string &  s1,
const std::string &  s2,
size_type  pos = 0 
)

Replace first occurrence of sub-string s1 with s2, beginning at pos.

Definition at line 101 of file string.C.

References Foam::ListOps::find(), and Foam::pos().

Referenced by argList::displayDoc(), objectRegistry::rename(), ensightSurfaceReader::replaceMask(), cellMotionFvPatchField< Type >::updateCoeffs(), and graph::wordify().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ replaceAll()

Foam::string & replaceAll ( const std::string &  s1,
const std::string &  s2,
size_type  pos = 0 
)

Replace all occurrences of sub-string s1 with s2, beginning at pos in the string.

A no-op if s1 is empty.

Definition at line 117 of file string.C.

References Foam::ListOps::find(), string::length(), and Foam::pos().

Here is the call graph for this function:

◆ replaceAny()

Foam::string & replaceAny ( const std::string &  s1,
const char  c2,
size_type  pos = 0 
)

Replace any occurrence of s1 characters with c2, beginning at pos in the string.

A no-op if s1 is empty.

Definition at line 140 of file string.C.

References Foam::constant::physicoChemical::c2, erase(), and Foam::pos().

Referenced by FileName::stripInvalid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ expand()

◆ removeRepeated()

bool removeRepeated ( const char  character)

Remove repeated characters.

Returns
True if string changed

Definition at line 173 of file string.C.

References stdFoam::begin(), Foam::constant::universal::c, stdFoam::cbegin(), stdFoam::cend(), erase(), and Foam::ListOps::find().

Here is the call graph for this function:

◆ removeStart() [1/2]

bool removeStart ( const std::string &  text)

Remove the given text from the start of the string.

Returns
True if the removal occurred

Definition at line 207 of file string.C.

References erase().

Referenced by dlLibraryTable::basename().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ removeStart() [2/2]

bool removeStart ( const char  c)

Remove leading character, unless string is a single character.

Returns
True if the removal occurred

Definition at line 237 of file string.C.

References Foam::constant::universal::c, and erase().

Here is the call graph for this function:

◆ removeEnd() [1/2]

bool removeEnd ( const std::string &  text)

Remove the given text from the end of the string.

Returns
True if the removal occurred

Definition at line 222 of file string.C.

References erase().

Referenced by string::removeTrailing().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ removeEnd() [2/2]

bool removeEnd ( const char  c)

Remove trailing character, unless string is a single character.

Returns
True if the removal occurred

Definition at line 249 of file string.C.

References Foam::constant::universal::c, erase(), and n.

Here is the call graph for this function:

◆ swap()

void swap ( std::string &  str)
inline

Swap contents. Self-swapping is a no-op.

Definition at line 223 of file stringI.H.

Referenced by keyType::swap(), and wordRe::swap().

Here is the caller graph for this function:

◆ operator()()

bool operator() ( const std::string &  text) const
inline

Test for equality. Allows use as a predicate.

Returns
True when strings match literally.

Definition at line 235 of file stringI.H.

◆ contains() [1/3]

bool contains ( char  c) const
inlinenoexcept

◆ contains() [2/3]

bool contains ( const std::string &  s) const
inlinenoexcept

True if string contains given [string view] substring (cf. C++23)

Definition at line 419 of file string.H.

References Foam::ListOps::find(), and s.

Here is the call graph for this function:

◆ contains() [3/3]

bool contains ( const char *  s) const
inline

True if string contains given substring (cf. C++23)

Definition at line 427 of file string.H.

References Foam::ListOps::find(), and s.

Here is the call graph for this function:

◆ starts_with() [1/3]

bool starts_with ( char  c) const
inline

True if string starts with given character (cf. C++20)

Definition at line 435 of file string.H.

References Foam::constant::universal::c.

Referenced by argList::displayDoc(), Foam::dlOpen(), argList::parse(), ABAQUSCore::readHelper::read(), seriesWriter::scan(), and string::startsWith().

Here is the caller graph for this function:

◆ starts_with() [2/3]

bool starts_with ( const std::string &  s) const
inline

True if string starts with given [string view] prefix (C++20)

Definition at line 443 of file string.H.

References s.

◆ starts_with() [3/3]

bool starts_with ( const char *  s) const
inline

True if string starts with given prefix (C++20)

Definition at line 451 of file string.H.

References s.

◆ ends_with() [1/3]

bool ends_with ( char  c) const
inline

True if string ends with given character (cf. C++20)

Definition at line 460 of file string.H.

References Foam::constant::universal::c.

Referenced by cellCellStencil::baseName(), and string::endsWith().

Here is the caller graph for this function:

◆ ends_with() [2/3]

bool ends_with ( const std::string &  s) const
inline

True if string ends with given [string view] suffix (cf. C++20)

Definition at line 468 of file string.H.

References s.

◆ ends_with() [3/3]

bool ends_with ( const char *  s) const
inline

True if string ends with given suffix (cf. C++20)

Definition at line 476 of file string.H.

References s.

◆ count()

Foam::string::size_type count ( const char  c) const

Count the number of occurrences of the specified character in the string.

Partially deprecated (NOV-2017) in favour of stringOps::count

Definition at line 94 of file string.C.

References Foam::constant::universal::c, and Foam::stringOps::count().

Here is the call graph for this function:

◆ startsWith()

bool startsWith ( const std::string &  s) const
inline

Deprecated(2019-11)

Deprecated:
(2019-11) use starts_with instead

Definition at line 495 of file string.H.

References s, and string::starts_with().

Here is the call graph for this function:

◆ endsWith()

bool endsWith ( const std::string &  s) const
inline

Deprecated(2019-11)

Deprecated:
(2019-11) use ends_with instead

Definition at line 502 of file string.H.

References string::ends_with(), and s.

Here is the call graph for this function:

◆ removeTrailing()

bool removeTrailing ( const char  c)
inline

Deprecated(2019-11)

Deprecated:
(2019-11) use removeEnd instead

Definition at line 509 of file string.H.

References Foam::constant::universal::c, and string::removeEnd().

Here is the call graph for this function:

Member Data Documentation

◆ typeName

const char *const typeName = "string"
static

The type name "string".

Definition at line 192 of file string.H.

◆ debug

int debug
static

The debug flag.

Definition at line 197 of file string.H.

◆ null


The documentation for this class was generated from the following files: