Blame | Last modification | View Log | Download
/** Trida RNDFParser poskytuje metody ke zpracovani textoveho souboru ve* formatu RNDF definovaneho v soutezi Rotobour 2007** @author: Vasco* @date: Sat, 21 Jul 2007 15:56:28 +0200* @version: 0.0.0**/#include <iostream>#include <string>#include <map>#include <vector>#include <cctype>#ifdef DBG// vypisuje ladici hlaseni#include "rndf_dbg.cpp"#endifclass RNDFParser {private:std::string rndfname;protected:/* funkce vezme retezec a rozlozi jej na slova, vraci vector<std::string> */std::vector<std::string> toWord(const std::string& veta);public:RNDFParser(std::string name) { rndfname = name; } // konstruktor, ulozi jmeno souborustd::string rndfName() { return rndfname; } // vrati jmeno zpracovavaneho souborustd::map<double, double> parseSegment(int numSegment); // rozparsuje zadany segment cesty};/*** @param veta retezec, ktery chceme rozlozit na slova** Metoda vezme vstupni retezec a rozlozi jej na slova. Slovo zacina a konci libovolnym poctem* bilych znaku, veta konci s koncem retezce. Vysledna slova jsou ukladana do vector<string>,* ktery je nasledne vracen volajicimu.*/std::vector<std::string> RNDFParser::toWord(const std::string& veta) {// definice vlastnich typutypedef std::string::size_type vel_vety; // velikost retezce// mistni promnenestd::vector<std::string> slova; // sem se budou ukladat slovavel_vety i = 0; // velikost zadane vety#ifdef DBG// pro kontrolu vypiseme vetuechoDbg(veta);#endif// dokud nedojdeme na konec retezcewhile(i != veta.size()) {// jsou na zacatku mezery? preskoc jewhile(i != veta.size() && std::isspace(veta[i]))i++;// uloz pozici zacatku slovavel_vety j = i; // pomocny ukazatel v retezci// slovo, dokud nenarazime na dalsi mezeruwhile(j != veta.size() && !(std::isspace(veta[j])))j++;// pokud se ve vete vyskytovaly slovaif(i != j) {// vloz slovo do vectoruslova.push_back(veta.substr(i, j - i));// opet ulozime pozici a jdem na dalsi slovoi = j;}} //end whilereturn slova;}/* funkce main je jen pro testovaci ucely, prelozi se pouze s definovanym makrem 'DBG' */#ifdef DBGint main(void) {std::cout << "PARSER:\tvypisuji RNDF soubor:" << std::endl;RNDFParser parser("RNDF_stromovka.txt");std::cout << "PARSER:\tJmeno souboru je " << parser.rndfName() << std::endl;return 0;}#endif