vle.reader
Introduction
The vle package vle.reader provides functions for reading 2D table matrices (eg. csv files). A data matrix can be filled using one call or the file can be read line by line.
Use case: read an entire file
First, add your data file data.txt into your package (mypackage/data/data.txt). Then fill it with double, integers or strings. In this example the first column contains double, the second contains integer, and the third contains strings:
0.5 2 first_string
10.6 8 "second string"
Use the following code to parse this file and convert values to vle::value::Value.
#include <vle/reader/table_file_reader.hpp>
#include <vle/utils/Package.hpp>
namespace vv = vle::value;
namespace vu = vle::utils;
namespace vr = vle::reader;
...
vv::Map params; //(1)
params.addString("sep"," "); //(2)
vv::Set& columns = params.addSet("columns"); //(3)
columns.addString("double"); //(4)
columns.addString("int"); //(5)
columns.addString("string"); //(6)
vu::Package pkg("mypackage");
vr::TableFileReader tfr(
pkg.getDataFile("data.txt"),params); //(7)
vv::Matrix mat;
tfr.readFile(mat); //(8)
std::cout << mat << std::endl;
The different steps of the above code do the following :
(1) build a vle map that will contains parameters of the parser
(2) set the type of separator between each column
(3) add a set named 'columns' to the map. It wil contain the
types of the columns.
(4) add a column of type 'double'
(5) add a column of type 'int'
(6) add a column of type 'string'
(7) instantiates a 'TableFileReader' with the parameters and the
path to the 'data.txt' file, that we get using the vle::utils::Package API.
(8) read the entire file using the function TableFileReader::readFile.
This function takes a matrix as argument and will fill it with the data.
Use case: read a file line by line
To read the file line by line, use the function readLine. Starting from the first use case, just replace step 8 by :
...
vv::Set set;
tfr.readLine(set); //(9)
std::cout << set << std::endl;
tfr.readLine(set); //(10)
std::cout << set << std::endl;