Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
String.h File Reference
#include "Stroika/Foundation/StroikaPreComp.h"
#include <compare>
#include <iosfwd>
#include <locale>
#include <string>
#include <string_view>
#include "Stroika/Foundation/Characters/Character.h"
#include "Stroika/Foundation/Characters/SDKString.h"
#include "Stroika/Foundation/Common/Compare.h"
#include "Stroika/Foundation/Common/StdCompat.h"
#include "Stroika/Foundation/Containers/Sequence.h"
#include "Stroika/Foundation/Containers/Set.h"
#include "Stroika/Foundation/Memory/SharedByValue.h"
#include "Stroika/Foundation/Memory/StackBuffer.h"
#include "Stroika/Foundation/Traversal/Iterable.h"
#include "String.inl"

Go to the source code of this file.

Classes

class  Stroika::Foundation::Characters::String
 String is like std::u32string, except it is much easier to use, often much more space efficient, and more easily interoperates with other string types. More...
 
struct  Stroika::Foundation::Characters::String::PeekSpanData
 Summary data for raw contents of rep - each rep will support at least one of these span forms. More...
 
class  Stroika::Foundation::Characters::String::_IRep
 
struct  Stroika::Foundation::Characters::String::EqualsComparer
 
struct  Stroika::Foundation::Characters::String::LessComparer
 very similar to ThreeWayComparer but returns true if less More...
 
struct  Stroika::Foundation::Characters::StringCombiner< STRING >
 StringCombiner is a simple function object used to combine two strings visually - used in Iterable<>::Join () More...
 
struct  qStroika_Foundation_Characters_FMT_PREFIX_::formatter< Stroika::Foundation::Characters::String, wchar_t >
 

Namespaces

namespace  Stroika::Foundation
 
namespace  Stroika::Foundation::Containers
 
namespace  Stroika::Foundation::Characters
 
namespace  Stroika::Foundation::Characters::Literals
 Create a format-string (see std::wformat_string or Stroika FormatString, or python 'f' strings.
 
namespace  std
 STL namespace.
 
namespace  Stroika::Foundation::DataExchange
 

Concepts

concept  Stroika::Foundation::Characters::IBasicUNICODEStdString
 returns true iff T == u8string, u16string, u32string, or wstring - which std::string types can be unambiguously converted to UNICODE
 
concept  Stroika::Foundation::Characters::IStdPathLike2UNICODEString
 anything with a 'special .STRINGTYPE conversion' method to UNICODE string, such as filesystem::path
 
concept  Stroika::Foundation::Characters::IConvertibleToString
 

Enumerations

enum class  Stroika::Foundation::Characters::StringShorteningPreference
 

Functions

wostream & Stroika::Foundation::Characters::operator<< (wostream &out, const String &s)
 
template<IConvertibleToString LHS_T, IConvertibleToString RHS_T>
requires (derived_from<remove_cvref_t<LHS_T>, String> or derived_from<remove_cvref_t<RHS_T>, String>)
String Stroika::Foundation::Characters::operator+ (LHS_T &&lhs, RHS_T &&rhs)
 

Variables

const function< String(String, String, bool)> Stroika::Foundation::Characters::kDefaultStringCombiner = StringCombiner<String>{.fSeparator = ", "_k}
 

Detailed Description

Note
Code-Status: Beta

TODO:

 @todo   Cleanup SubString (), and String::SubString_ use of SharedByValue<TRAITS>::ReadOnlyReference for
         performance. At some level - in String::SubString_ - we have a (hidden) sharedPtr and it would
         be safe and performant in that case to re-use that shared_ptr to make a new String envelope.

         However, I'm not sure its safe in general to have SharedByValue<TRAITS>::ReadOnlyReference expose
         its shared_ptr, which appears needed to make this happen.

         Not a biggie opportunity, so we can delay this -- LGP 2014-04-10

 @todo   Add PadLeft/PadRight or FillLeft/FilLRight() - not sure which name is better. But idea is to
         produce a string which is identical to the orig except that IF start len < n, then expand it with
         the given arg char repeated on the left or right.

 @todo   RFind() API should be embellished to include startAt etc, like regular Find () - but not 100%
         sure - think through...

 @todo   MAYBE also add ReplaceOne() function (we have ReplaceAll() now) ; see Replace() API in this function? - maybe overload?

 @todo   Move DOCS in the top of this file down to the appropriate major classes - and then review the implementation and make sure
         it is all correct for each (especially SetStorage () stuff looks questionable)

Definition in file String.h.