Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::CsvReader Class Reference

Lazy CSV reader for large files. More...

#include <parse-csv.H>

Collaboration diagram for Aleph::CsvReader:
[legend]

Classes

class  Iterator
 

Public Member Functions

 CsvReader (const std::string &filename, char delimiter=',')
 Construct reader from file path.
 
 CsvReader (std::istream &stream, char delimiter=',')
 Construct reader from stream.
 
Array< std::string > read_header ()
 Read and store the header row.
 
bool has_next () const
 Check if more rows are available.
 
Array< std::string > next ()
 Read the next row as Array.
 
CsvRow next_row ()
 Read the next row with header access.
 
size_t rows_read () const
 Get number of rows read so far.
 
const Array< std::string > & header () const
 Get the header (if read).
 
bool has_header () const
 Check if header was read.
 
void skip (size_t n)
 Skip N rows.
 
void reset ()
 Reset to beginning (only works for file-based readers).
 
Iterator begin ()
 
Iterator end ()
 

Private Attributes

std::ifstream file_
 
std::istream * stream_
 
bool owns_stream_
 
char delimiter_
 
Array< std::string > header_
 
bool has_header_
 
size_t row_count_
 

Detailed Description

Lazy CSV reader for large files.

CsvReader provides an iterator-based interface for reading CSV files row by row without loading the entire file into memory.

// Read large CSV file efficiently
CsvReader reader("large_file.csv");
// Skip header and use it for column names
reader.read_header();
while (reader.has_next())
{
CsvRow row = reader.next_row();
process(row["id"], row["value"]);
}
// Or use range-based for (without header)
CsvReader reader2("data.csv");
for (const auto & row : reader2)
std::cout << row[0] << "\n";
Lazy CSV reader for large files.
Definition parse-csv.H:711
A CSV row with header-based field access.
Definition parse-csv.H:601
DynList< T > maps(const C &c, Op op)
Classic map operation.
STL namespace.

Definition at line 710 of file parse-csv.H.

Constructor & Destructor Documentation

◆ CsvReader() [1/2]

Aleph::CsvReader::CsvReader ( const std::string &  filename,
char  delimiter = ',' 
)
inlineexplicit

Construct reader from file path.

Exceptions
std::runtime_errorIf file cannot be opened.

Definition at line 723 of file parse-csv.H.

References file_, and Aleph::maps().

◆ CsvReader() [2/2]

Aleph::CsvReader::CsvReader ( std::istream &  stream,
char  delimiter = ',' 
)
inlineexplicit

Construct reader from stream.

Definition at line 732 of file parse-csv.H.

Member Function Documentation

◆ begin()

Iterator Aleph::CsvReader::begin ( )
inline

Definition at line 831 of file parse-csv.H.

◆ end()

Iterator Aleph::CsvReader::end ( )
inline

Definition at line 832 of file parse-csv.H.

◆ has_header()

bool Aleph::CsvReader::has_header ( ) const
inline

Check if header was read.

Definition at line 775 of file parse-csv.H.

References has_header_.

◆ has_next()

bool Aleph::CsvReader::has_next ( ) const
inline

Check if more rows are available.

Definition at line 746 of file parse-csv.H.

References Aleph::maps(), and stream_.

Referenced by Aleph::CsvReader::Iterator::Iterator(), Aleph::CsvReader::Iterator::operator++(), and skip().

◆ header()

const Array< std::string > & Aleph::CsvReader::header ( ) const
inline

Get the header (if read).

Definition at line 772 of file parse-csv.H.

References header_.

◆ next()

Array< std::string > Aleph::CsvReader::next ( )
inline

Read the next row as Array.

Definition at line 752 of file parse-csv.H.

References Aleph::csv_read_row(), delimiter_, row_count_, and stream_.

Referenced by Aleph::CsvReader::Iterator::Iterator(), Aleph::CsvReader::Iterator::operator++(), and skip().

◆ next_row()

CsvRow Aleph::CsvReader::next_row ( )
inline

Read the next row with header access.

Definition at line 759 of file parse-csv.H.

References Aleph::csv_read_row(), delimiter_, has_header_, header_, row_count_, and stream_.

◆ read_header()

Array< std::string > Aleph::CsvReader::read_header ( )
inline

Read and store the header row.

Returns
The header row.

Definition at line 738 of file parse-csv.H.

References Aleph::csv_read_row(), delimiter_, has_header_, header_, and stream_.

Referenced by reset().

◆ reset()

void Aleph::CsvReader::reset ( )
inline

Reset to beginning (only works for file-based readers).

Definition at line 785 of file parse-csv.H.

References file_, has_header_, owns_stream_, read_header(), and row_count_.

◆ rows_read()

size_t Aleph::CsvReader::rows_read ( ) const
inline

Get number of rows read so far.

Definition at line 769 of file parse-csv.H.

References row_count_.

◆ skip()

void Aleph::CsvReader::skip ( size_t  n)
inline

Skip N rows.

Definition at line 778 of file parse-csv.H.

References has_next(), Aleph::maps(), and next().

Member Data Documentation

◆ delimiter_

char Aleph::CsvReader::delimiter_
private

Definition at line 715 of file parse-csv.H.

Referenced by next(), next_row(), and read_header().

◆ file_

std::ifstream Aleph::CsvReader::file_
private

Definition at line 712 of file parse-csv.H.

Referenced by CsvReader(), and reset().

◆ has_header_

bool Aleph::CsvReader::has_header_
private

Definition at line 717 of file parse-csv.H.

Referenced by has_header(), next_row(), read_header(), and reset().

◆ header_

Array<std::string> Aleph::CsvReader::header_
private

Definition at line 716 of file parse-csv.H.

Referenced by header(), next_row(), and read_header().

◆ owns_stream_

bool Aleph::CsvReader::owns_stream_
private

Definition at line 714 of file parse-csv.H.

Referenced by reset().

◆ row_count_

size_t Aleph::CsvReader::row_count_
private

Definition at line 718 of file parse-csv.H.

Referenced by next(), next_row(), reset(), and rows_read().

◆ stream_

std::istream* Aleph::CsvReader::stream_
private

Definition at line 713 of file parse-csv.H.

Referenced by has_next(), next(), next_row(), and read_header().


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