Mi sto facendo una mia lib comene x tutti i miei programmi, che sia il + possibili portabile.
Sto facendo la generica classe CParse per caricare files di conf.
Questa sara la base x CCOnfigParse.
Questo è la sua dichiarazione.codice:// Parse.hpp #ifndef PARSE_HPP_ #define PARSE_HPP_ #include "Define.hpp" #include <iostream> #include <fstream> #include <sstream> #include <string> #include <cstring> using namespace std; N_BEG /** Name:CParse \n Author:Kleidemos \n Description:Parserizza una configurazione generica \n Indicata come base per sviluppi \n */ class CParse { friend CParse& operator+=(CParse &p, string _add); public: CParse() { _buf = " "; }; CParse(string buf){ _buf = buf; }; CParse(char * buf){ _buf = buf; }; ~CParse(); /// Read a generic config void Read(istream &is = cin, string * buf_r = ""); /// Write a generic config void Write(ostream &os = cout, string buf = " "); /// Add a text inline void Add(string add) { _buf += add; }; /// Find a info string Find(string info); private: string _buf; }; N_END #endif
Ho implementato +=, Write, Add.
Ma nn so come implementare Find.
Questo metodo dovrebbe cercarmi nel buffer caricato con Read(ancora da sistemare) un determinato valore(tipo file ini opt=valore).
Ma nn so come implementarla
Al momento ho implementato solo un metodo per sapere se è un files di config o no.
codice:/** Name:Find\n ReturnL'informazione trovata\n Argoments:L' informazione da cercare\n Description:Find a info\n */ string CParse::Find(string info) { const string CONFIG_MARK = "[CONFIG]"; if(_buf.substr(0, CONFIG_MARK.size()) == CONFIG_MARK){ /// TODO string::size_type val; val = _buf.find(info, 0 ); if(val != string::npos){// trovata string ret; }else{// non trovata return "Error!\n"; } }else{ return "Error!\n"; } }


Rispondi quotando