RepositoryUtilities.h


Dosyayı İndir
#ifndef REPOSITORYUTILITIES_H_INCLUDED
#define REPOSITORYUTILITIES_H_INCLUDED

#include <vector>
#include <iostream>
#include <sstream>

#define LINE_DELIMITER '\n'
#define CELL_DELIMITER '\t'

using namespace std;

// Type Conversions
long string_to_long(string text){
    stringstream ss(text);
    long number;
    ss>>number;
    return number;
}
string long_to_string(long number){
    stringstream ss;
    ss<<number;
    string text=ss.str();
    return text;
}
double string_to_double(string text){
    stringstream ss(text);
    double number;
    ss>>number;
    return number;
}
string double_to_string(double number){
    stringstream ss;
    ss<<number;
    string text=ss.str();
    return text;
}
// String Vector Split & Build
vector<string> split_vector(const string &text, const char cellDelimiter=CELL_DELIMITER){
    stringstream ss(text);
    string element;
    vector<string> elements;
    while(getline(ss,element,cellDelimiter))
    {
        elements.push_back(element);
    }
    return elements;
}
string build_vector(vector<string> &elements,const char cellDelimiter=CELL_DELIMITER){
    stringstream ss;
    for(vector<string>::iterator i = elements.begin();i != elements.end();i++){
        ss<<*i<<cellDelimiter;
    }
    string text = ss.str();
    return text;
}

// String Vector Read & Write
void write_vector(ostream &os,vector<string> &elements,const char lineDelimiter=LINE_DELIMITER){
    for(vector<string>::iterator i = elements.begin();i != elements.end();i++){
        os<<*i<<lineDelimiter;
    }
}
void read_vector(istream &is,vector<string> &elements,const char lineDelimiter=LINE_DELIMITER){
    string line;
    while (getline(is, line,lineDelimiter))
    {
        elements.push_back(line);
    }
}
// String Vector of Vector Read & Write
void write_vector(ostream &os,vector<vector<string>> &cells,const char cellDelimiter=CELL_DELIMITER, const char lineDelimiter=LINE_DELIMITER){

    for(vector<vector<string>>::iterator i = cells.begin();i != cells.end();i++){
        //string line=build_vector(*i,cellDelimiter);
        //os<<line<<endl;

        for(vector<string>::iterator j = i->begin();j != i->end();j++){
            os<<*j<<cellDelimiter;
        }
        os<<lineDelimiter;

    }
}
void read_vector(istream &is,vector<vector<string>> &cells,const char cellDelimiter=CELL_DELIMITER, const char lineDelimiter=LINE_DELIMITER){
    string line;
    while (getline(is, line))
    {
        //vector<string> elements=split_vector(line,cellDelimiter);
        stringstream ss(line);
        string element;
        vector<string> elements;
        while(getline(ss,element,cellDelimiter))
        {
            elements.push_back(element);
        }

        cells.push_back(elements);
    }
}

// Any Type Vector Read & Write
template<class T>
class IConverter{
public:
    virtual T fromString(string text)=0;
    virtual string toString(T object)=0;
};

template<class T>
void write_vector(ostream &os,vector<T> &elements,IConverter<T> &converter,const char lineDelimiter=LINE_DELIMITER){
    for(typename vector<T>::iterator i = elements.begin();i != elements.end();i++){
        T object=*i;
        string text=converter.toString(object);
        os<<text<<lineDelimiter;
    }
}

template<class T>
void read_vector(istream &is,vector<T> &elements,IConverter<T> &converter,const char lineDelimiter=LINE_DELIMITER){
    string line;
    while (getline(is, line,lineDelimiter))
    {
        T object=converter.fromString(line);
        elements.push_back(object);
    }
}
#endif

				
Dosyayı İndir

Bu Sayfayı Paylaş:




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir