Narzędzia użytkownika

Narzędzia witryny


tokenizer

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision Both sides next revision
tokenizer [2008/04/12 21:24]
mplacht1
tokenizer [2008/04/12 22:11]
mplacht1
Linia 114: Linia 114:
 using namespace std; using namespace std;
 using namespace boost; using namespace boost;
 +
 +string s = "​12252001";​
 +int offsets[] = {2,2,4};
  
 int main(){ int main(){
-   ​string s = "​12252001";​ 
-   int offsets[] = {2,2,4}; 
    ​offset_separator f(offsets, offsets+3);    ​offset_separator f(offsets, offsets+3);
    ​typedef token_iterator_generator<​offset_separator>::​type Iter;    ​typedef token_iterator_generator<​offset_separator>::​type Iter;
Linia 200: Linia 201:
 ---- ----
 ==== Klasa escaped_list_separator ==== ==== Klasa escaped_list_separator ====
 +Klasa ''​escaped_list_separator''​ jest jedną z implementacji funktora TokenizerFunction. ''​escaped_list_separator''​ formatuje dane typu ''​csv''​ (''​Comma Separated Values''​ - wartości rozdzielone przecinkiem). Poniższy przykład obrazuje format, w którym użyto domyślnych znaków separatora, cytowania oraz znaku przywracającego znaczenie.
  
 +''​Pole 1,Pole 2,Pole 3''​\\
 +''​Pole 1,"​Pole2,​ z przecinkiem",​Pole3''​\\
 +''​Pole1,​Pole2 z\"​otoczony cytowaniem\",​Pole3''​\\
 +''​Pole1,​ Pole2 z \n nowa linią,​Pole3''​\\
 +''​Pole1,​ Pole2 z otoczonym \\,​Pole3''​\\
 +
 +Pola są domyślnie oddzielane przez przecinki. W celu wstawienia przecinka do pola, należy otoczyć go cytowaniem. Sekwencje trzech znaków przywracających znaczenie są wspierane.
 +\\
 +Przykład użycia:
 +<code cpp>
 +#​include<​iostream>​
 +#​include<​boost/​tokenizer.hpp>​
 +#​include<​string>​
 +
 +using namespace std;
 +using namespace boost;
 +
 +string s = "​Pole1,​\"​wstawianie cytowania dookola pola umozliwia, uzywanie przecinkow\",​Pole3";​
 +
 +int main(){
 +   ​tokenizer<​escaped_list_separator<​char>​ > tok(s);
 +   ​for(tokenizer<​escaped_list_separator<​char>​ >::​iterator beg=tok.begin();​ beg!=tok.end();​++beg){
 +       cout << *beg << "​\n";​
 +   }
 +   ​return 0;
 +}
 +</​code>​
 +Wynikiem działania programu będzie sekwencja: ​
 +<​code>​
 +Pole1
 +wstawianie cytowania dookola pola umozliwia, uzywanie przecinkow
 +Pole3
 +</​code>​
 +\\
 +Klasa ''​escaped_list_separator''​ posiada dwa następujące konstruktory:​
 +<code cpp>
 +explicit escaped_list_separator(Char e = '​\\',​ Char c = ',',​Char q = '​\"'​)
 +</​code>​
 +Parametry konstruktora:​
 +  * e - określa znak, który przywraca pierwotne znaczenie znaku następującego po nim
 +  * c - określa znak używany jako separator
 +  * q - określa znak oznaczający cytowanie
 +\\
 +<code cpp>
 +escaped_list_separator(string_type e, string_type c, string_type q):
 +</​code>​
 +Parametry konstruktora:​
 +  * e - znaki z łańcucha określaja znaki, które przywracają pierwotne znaczenie znaku następującego po nim, pusty łańcuch określa brak takiego znaku
 +  * c - każdy znak z łańcucha określa znak używany jako separator, pusty łańcuch określa brak takiego znaku
 +  * q - znaki z łańcucha określaja znak oznaczający cytowanie, pusty łańcuch określa brak takiego znaku
 +\\
 ---- ----
 ==== Klasa offset_separator ==== ==== Klasa offset_separator ====
tokenizer.txt · ostatnio zmienione: 2008/04/14 08:45 przez mplacht1