1 #ifndef INCLUDED_ObjexxFCL_Cstring_hh
2 #define INCLUDED_ObjexxFCL_Cstring_hh
26 #include <type_traits>
76 str_( new char[ std::strlen( s.
str_ ) + 1 ] )
85 str_( new char[ std::strlen( s ) + 1 ] )
87 std::memcpy(
str_, s, std::strlen( s ) + 1 );
109 str_( new char[ len + 1 ] )
111 assert( len <= s.
length() );
123 str_( new char[ len + 1 ] )
125 assert( len <= std::strlen( s ) );
126 std::memcpy(
str_, s, len );
134 std::string
const &
s,
137 str_( new char[ len + 1 ] )
139 assert( len <= s.length() );
149 str_( new char[ 2 ] )
160 str_( new char[ len + 1 ] )
162 std::memset(
str_,
' ', len );
171 str_( new char[ len + 1 ] )
173 std::memset(
str_,
' ', len );
216 delete[]
str_; str_ =
new char[
len ];
217 std::memcpy( str_, s.
str_,
len );
230 std::memmove(
str_, s, len );
241 delete[]
str_; str_ =
new char[
len + 1 ];
253 delete[]
str_;
str_ =
new char[ 2 ];
265 Cstring( *
this + s ).swap( *
this );
275 Cstring( *
this + s ).swap( *
this );
285 Cstring( *
this + s ).swap( *
this );
295 Cstring( *
this + c ).swap( *
this );
308 return ( std::strlen(
str_ ) == 0 );
352 has(
char const c )
const;
363 return std::strlen(
str_ );
372 return std::strlen(
str_ );
381 return std::strlen(
str_ );
397 find(
char const c )
const;
485 assert( i < std::strlen(
str_ ) );
495 assert( i < std::strlen(
str_ ) );
507 assert( static_cast< size_type >( i ) < std::strlen(
str_ ) );
519 assert( static_cast< size_type >( i ) < std::strlen(
str_ ) );
536 std::memcpy( u.str_, s.
str_, s_len );
537 std::memcpy( u.str_ + s_len, t.
str_, t_len + 1 );
549 size_type const t_len( std::strlen( t ) );
551 std::memcpy( u.
str_, s.
str_, s_len );
552 std::memcpy( u.
str_ + s_len, t, t_len + 1 );
563 size_type const s_len( std::strlen( s ) );
566 std::memcpy( u.str_, s, s_len );
567 std::memcpy( u.str_ + s_len, t.
str_, t_len + 1 );
581 std::memcpy( u.str_, s.
str_, s_len );
582 t.copy( u.str_ + s_len, t_len );
595 std::memcpy( u.str_, s.
str_, s_len );
610 std::memcpy( u.str_ + 1, t.
str_, t_len + 1 );
623 return Cstring( *this ).lowercase();
632 return Cstring( *this ).uppercase();
641 return Cstring( *this ).left_justify();
650 return Cstring( *this ).right_justify();
677 return Cstring( *this ).center();
686 return Cstring( *this ).compress();
699 return ( std::strcmp( s.
str_, t.
str_ ) == 0 );
709 return ( std::strcmp( s.
str_, t.
str_ ) != 0 );
719 return ( std::strcmp( s.
str_, t ) == 0 );
729 return ( std::strcmp( s.
str_, t ) == 0 );
739 return ( std::strcmp( s.
str_, t ) != 0 );
749 return ( std::strcmp( s.
str_, t ) != 0 );
759 return ( s.
str_ == t );
769 return ( t == s.
str_ );
779 return ( s.
str_ != t );
789 return ( t != s.
str_ );
799 return ( ( s.
length() == 1 ) && ( s.
str_[ 0 ] == c ) );
809 return ( ( s.
length() == 1 ) && ( s.
str_[ 0 ] == c ) );
819 return ( ( s.
length() != 1 ) || ( s.
str_[ 0 ] != c ) );
829 return ( ( s.
length() != 1 ) || ( s.
str_[ 0 ] != c ) );
1059 #endif // INCLUDED_ObjexxFCL_Cstring_HH
std::istream & operator>>(std::istream &stream, byte &b)
Stream Input.
Cstring right_justified() const
Right-Justified Copy.
Cstring(size_type const len)
Length Constructor.
bool is_blank() const
Blank?
Cstring & compress()
Compress Out Whitespace.
bool operator!=(byte const &i, byte const &j)
byte != byte
Cstring(std::string const &s, size_type const len)
std::string + Length Constructor
friend bool equali(Cstring const &s, Cstring const &t)
Cstring == Cstring Case-Insensitively?
Cstring & trim()
Trim Trailing Space.
bool has(char const c) const
Has a Character?
static void swap(T &x, T &y)
Cstring(c_cstring const s)
C string Constructor: Implicit Conversion.
Cstring & left_justify()
Left Justify.
Cstring centered() const
Centered Copy.
void swap(Cstring &s)
swap( Cstring )
friend std::istream & operator>>(std::istream &stream, Cstring &s)
Input from Stream.
size_type find(char const c) const
Find First Occurrence of a Character.
Cstring(char const c)
char Constructor
size_type size() const
Size.
size_type len_trim() const
Length Space-Trimmed.
size_type len_trim_whitespace() const
Length Whitespace-Trimmed.
Cstring()
Default Constructor.
Cstring left_justified() const
Left-Justified Copy.
Cstring(std::string const &s)
std::string Constructor
Cstring & uppercase()
Uppercase.
friend bool operator==(Cstring const &s, Cstring const &t)
Cstring == Cstring.
byte operator+(byte const &i, byte const &j)
byte + byte
Cstring & center()
Center.
friend bool operator!=(Cstring const &s, Cstring const &t)
Cstring != Cstring.
bool has_any_of(Cstring const &s) const
Has Any Character of a Cstring?
bool equali(char const c, char const d)
char == char Case-Insensitively
virtual ~Cstring()
Destructor.
Cstring trimmed_whitespace() const
Whitespace-Trimmed Copy.
size_type length() const
Length.
Cstring: C String Wrapper.
Cstring(Cstring const &s, size_type const len)
Cstring + Length Constructor.
Cstring & lowercase()
Lowercase.
Cstring uppercased() const
Uppercased Copy.
Cstring lowercased() const
Lowercased Copy.
Cstring & right_justify()
Right Justify.
Cstring(int const len)
Length Constructor.
Cstring & operator+=(Cstring const &s)
Cstring Append.
bool empty() const
Empty?
Cstring & trim_whitespace()
Trim Trailing Whitespace.
Cstring compressed() const
Compressed Copy.
Cstring & operator=(Cstring const &s)
Copy Assignment.
Cstring(c_cstring const s, size_type const len)
C string + Length Constructor.
Cstring trimmed() const
Space-Trimmed Copy.
size_type find_last(char const c) const
Find Last Occurrence of a Character.
static size_type const npos
void swap(CArray< T > &a, CArray< T > &b)
Swap.
size_type len() const
Length.
std::ostream & operator<<(std::ostream &stream, CArray< T > const &a)
stream << CArray
bool operator==(byte const &i, byte const &j)
byte == byte
friend Cstring operator+(Cstring const &s, Cstring const &t)
Cstring + Cstring.
char operator[](size_type const i) const
Cstring[ i ] const.
bool not_blank() const
Not blank?
Cstring(Cstring const &s)
Copy Constructor.
friend std::ostream & operator<<(std::ostream &stream, Cstring const &s)
Output to Stream.