CoreComponents 3.0.0
A Modern C++ Toolkit
No Matches

Read records from a CSV formatted input text. More...

#include <cc/CsvSource>

Inheritance diagram for CsvSource:

Public Types

using Item = List<String>
 Item type for iteration

Public Member Functions

 CsvSource (const String &text)
 Create a new CSV source.
bool read (Out< List< String > > record)
 Read next record.
SourceIterator< CsvSourcebegin ()
 Iteration start.
SourceIterator< CsvSourceend ()
 Iteration end.
- Public Member Functions inherited from Object
 Object ()=default
 Create a null object.
 operator bool () const
 Check if this is a non-null object.
bool isNull () const
 Check if this is a null object.
template<class T >
bool is () const
 Check if this object is of type T.
template<class T >
as () const
 Cast this object to type T.
bool isWeak () const
 Check if the underlying object reference is weak.
bool operator== (const Object &other) const
 Equality operator.
std::strong_ordering operator<=> (const Object &other) const
 Ordering operator.
long useCount () const
 Reference count.

Additional Inherited Members

- Protected Member Functions inherited from Object
template<class T >
weak () const
template<class T >
void initOnce ()
 Create the object state when called the first time.
template<class T >
void initOncePerThread ()
 Create a distinct object state for each thread when called the first time in that thread.
 Object (State *newState)
 Initialize object with newState.
 Object (State *state, Alias)
 Object (State *state, Weak)
Objectoperator= (std::nullptr_t)
- Static Protected Member Functions inherited from Object
template<class T >
static T alias (const State *state)
 Create an alias object for the given state.
template<class T >
static T weak (const State *state)
- Protected Attributes inherited from Object
Handle< Stateme
 Internal object state

Detailed Description

Read records from a CSV formatted input text.

The CSV syntax follows closely the CSV syntax definition of RFC 4180, but is more relaxed in several ways. Firstly it also supports text data beyond the printable ASCII range and thereby fully supports national code pages and UTF-8 encoding. Secondly it accepts any form of newline encoding ("\n", "\f", "\n\f" or "\f\n").

Member Typedef Documentation

◆ Item

using Item = List<String>

Item type for iteration

Constructor & Destructor Documentation

◆ CsvSource()

CsvSource ( const String & text)

Create a new CSV source.

textCSV formatted input text

Member Function Documentation

◆ read()

bool read ( Out< List< String > > record)

Read next record.

recordReturns the next record (if not end of input)
True if not end of input

◆ begin()

SourceIterator< CsvSource > begin ( )

Iteration start.

◆ end()

Iteration end.