OpenMS
Loading...
Searching...
No Matches
CsvFile Class Reference

This class handles csv files. Currently only loading is implemented. More...

#include <OpenMS/FORMAT/CsvFile.h>

Inheritance diagram for CsvFile:
[legend]
Collaboration diagram for CsvFile:
[legend]

Public Member Functions

 CsvFile ()
 Default constructor.
 
 ~CsvFile () override
 destructor
 
 CsvFile (const std::string &filename, char is=',', bool ie=false, Int first_n=-1)
 Constructor with filename.
 
void load (const std::string &filename, char is=',', bool ie=false, Int first_n=-1)
 Loads data from a text file.
 
void store (const std::string &filename)
 Stores the buffer's content into a file.
 
void addRow (const StringList &list)
 Add a row to the buffer.
 
void clear ()
 Clears the buffer.
 
bool getRow (Size row, StringList &list) const
 writes all items from a row to list
 
std::vector< std::string >::size_type rowCount () const
 Returns the number of rows that were loaded from the file.
 

Private Attributes

char itemseperator_
 
bool itemenclosed_
 
- Private Attributes inherited from TextFile
std::vector< std::string > buffer_
 Internal buffer storing the lines before writing them to the file.
 

Additional Inherited Members

- Private Types inherited from TextFile
typedef std::vector< std::string >::iterator Iterator
 Mutable iterator.
 
typedef std::vector< std::string >::const_iterator ConstIterator
 Non-mutable iterator.
 
typedef std::vector< std::string >::reverse_iterator ReverseIterator
 Mutable reverse iterator.
 
typedef std::vector< std::string >::const_reverse_iterator ConstReverseIterator
 Non-mutable reverse iterator.
 
- Private Member Functions inherited from TextFile
 TextFile ()
 Default constructor.
 
virtual ~TextFile ()
 destructor
 
 TextFile (const std::string &filename, bool trim_lines=false, Int first_n=-1, bool skip_empty_lines=false, const std::string &comment_symbol="")
 Constructor with filename.
 
void load (const std::string &filename, bool trim_lines=false, Int first_n=-1, bool skip_empty_lines=false, const std::string &comment_symbol="")
 Loads data from a text file into the internal buffer.
 
void store (const std::string &filename)
 Writes the data to a file.
 
template<typename StringType >
TextFileoperator<< (const StringType &string)
 Operator for appending entries with less code.
 
template<typename StringType >
void addLine (const StringType &line)
 
ConstIterator begin () const
 Gives access to the underlying text buffer.
 
Iterator begin ()
 
ConstIterator end () const
 Gives access to the underlying text buffer.
 
Iterator end ()
 
- Static Private Member Functions inherited from TextFile
static std::istream & getLine (std::istream &is, std::string &t)
 Platform-agnostic getline() which can deal with all line endings (\r, \r\n, \n)
 

Detailed Description

This class handles csv files. Currently only loading is implemented.

Note
Lines whose first character is '#' are unconditionally treated as comments and silently skipped on load (they are not stored and are not counted by rowCount()). The load() method strips leading whitespace before this test (so " #x" is also skipped), whereas the CsvFile(filename, ...) constructor tests the raw, untrimmed line. This comment symbol is hardcoded and cannot be disabled, so a CSV whose first field legitimately starts with '#' will lose those rows.
items are allowed to be enclosed by only one character e.g. "item" where " is enclosing character

Constructor & Destructor Documentation

◆ CsvFile() [1/2]

CsvFile ( )

Default constructor.

◆ ~CsvFile()

~CsvFile ( )
override

destructor

◆ CsvFile() [2/2]

CsvFile ( const std::string &  filename,
char  is = ',',
bool  ie = false,
Int  first_n = -1 
)

Constructor with filename.

Parameters
[in]filenameThe input file name.
[in]ischaracter which separates the items.
[in]ieWhether or not every item is enclosed.
[in]first_nOnly the given number of lines are read, starting from the beginning of the file.
Exceptions
Exception::FileNotFoundis thrown if the file could not be opened.

Member Function Documentation

◆ addRow()

void addRow ( const StringList list)

Add a row to the buffer.

Parameters
[in]listStringList which will contain all items of the row to add

◆ clear()

void clear ( )

Clears the buffer.

Clears TextFile::buffer_

◆ getRow()

bool getRow ( Size  row,
StringList list 
) const

writes all items from a row to list

Parameters
[in]rowthe row which will be read
[out]listStringList which will contain all items of the row
Exceptions
Exception::InvalidIteratoris thrown if the row is not existing
Returns
returns false if the given row could not be separated into items

◆ load()

void load ( const std::string &  filename,
char  is = ',',
bool  ie = false,
Int  first_n = -1 
)

Loads data from a text file.

Parameters
[in]filenameThe input file name.
[in]ischaracter which separates the items.
[in]ieWhether or not every item is enclosed.
[in]first_nOnly the given number of lines are read, starting from the beginning of the file.
Exceptions
Exception::FileNotFoundis thrown if the file could not be opened.

◆ rowCount()

std::vector< std::string >::size_type rowCount ( ) const

Returns the number of rows that were loaded from the file.

Returns
The number of loaded rows.

◆ store()

void store ( const std::string &  filename)

Stores the buffer's content into a file.

Parameters
[in]filenameThe output filename.

Member Data Documentation

◆ itemenclosed_

bool itemenclosed_
private

◆ itemseperator_

char itemseperator_
private