| 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
|---|
| 2 | |
|---|
| 3 | <html> |
|---|
| 4 | <head> |
|---|
| 5 | <meta http-equiv="Content-Language" content="en-us"> |
|---|
| 6 | <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> |
|---|
| 7 | <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> |
|---|
| 8 | <meta name="ProgId" content="FrontPage.Editor.Document"> |
|---|
| 9 | |
|---|
| 10 | <title>Boost Offset Separator</title> |
|---|
| 11 | </head> |
|---|
| 12 | |
|---|
| 13 | <body bgcolor="#FFFFFF" text="#000000" link="#0000EE" vlink="#551A8B" alink= |
|---|
| 14 | "#FF0000"> |
|---|
| 15 | <p><img src="../../boost.png" alt="C++ Boost" width="277" height= |
|---|
| 16 | "86"><br></p> |
|---|
| 17 | |
|---|
| 18 | <h1 align="center">Offset Separator</h1> |
|---|
| 19 | <pre> |
|---|
| 20 | class offset_separator |
|---|
| 21 | </pre> |
|---|
| 22 | |
|---|
| 23 | <p>The <tt>offset_separator</tt> class is an implementation of the <a href= |
|---|
| 24 | "tokenizerfunction.htm">TokenizerFunction</a> concept that can be used with |
|---|
| 25 | the <a href="tokenizer.htm">tokenizer</a> class to break text up into |
|---|
| 26 | tokens. The <tt>offset_separator</tt> breaks a sequence of <tt>Char</tt>'s |
|---|
| 27 | into strings based on a sequence of offsets. For example, if you had the |
|---|
| 28 | string "12252001" and offsets (2,2,4) it would break the string into 12 25 |
|---|
| 29 | 2001. Here is an example.</p> |
|---|
| 30 | |
|---|
| 31 | <h2>Example</h2> |
|---|
| 32 | <pre> |
|---|
| 33 | // simple_example_3.cpp |
|---|
| 34 | #include<iostream> |
|---|
| 35 | #include<boost/tokenizer.hpp> |
|---|
| 36 | #include<string> |
|---|
| 37 | |
|---|
| 38 | int main(){ |
|---|
| 39 | using namespace std; |
|---|
| 40 | using namespace boost; |
|---|
| 41 | string s = "12252001"; |
|---|
| 42 | int offsets[] = {2,2,4}; |
|---|
| 43 | offset_separator f(offsets, offsets+3); |
|---|
| 44 | tokenizer<offset_separator> tok(s,f); |
|---|
| 45 | for(tokenizer<offset_separator>::iterator beg=tok.begin(); beg!=tok.end();++beg){ |
|---|
| 46 | cout << *beg << "\n"; |
|---|
| 47 | } |
|---|
| 48 | } |
|---|
| 49 | </pre> |
|---|
| 50 | |
|---|
| 51 | <p> </p> |
|---|
| 52 | |
|---|
| 53 | <h2>Construction and Usage</h2> |
|---|
| 54 | |
|---|
| 55 | <p>The offset_separator has 1 constructor of interest. (The default |
|---|
| 56 | constructor is just there to make some compilers happy). The declaration is |
|---|
| 57 | below</p> |
|---|
| 58 | <pre> |
|---|
| 59 | template<typename Iter> |
|---|
| 60 | offset_separator(Iter begin,Iter end,bool bwrapoffsets = true, bool breturnpartiallast = true) |
|---|
| 61 | </pre> |
|---|
| 62 | |
|---|
| 63 | <table border="1" summary=""> |
|---|
| 64 | <tr> |
|---|
| 65 | <td> |
|---|
| 66 | <p align="center"><strong>Parameter</strong></p> |
|---|
| 67 | </td> |
|---|
| 68 | |
|---|
| 69 | <td> |
|---|
| 70 | <p align="center"><strong>Description</strong></p> |
|---|
| 71 | </td> |
|---|
| 72 | </tr> |
|---|
| 73 | |
|---|
| 74 | <tr> |
|---|
| 75 | <td>begin, end</td> |
|---|
| 76 | |
|---|
| 77 | <td>Specify the sequence of integer offsets.</td> |
|---|
| 78 | </tr> |
|---|
| 79 | |
|---|
| 80 | <tr> |
|---|
| 81 | <td>bwrapoffsets</td> |
|---|
| 82 | |
|---|
| 83 | <td>Tells whether to wrap around to the beginning of the offsets when |
|---|
| 84 | the all the offsets have been used. For example the string |
|---|
| 85 | "1225200101012002" with offsets (2,2,4) with bwrapoffsets to true, |
|---|
| 86 | would parse to 12 25 2001 01 01 2002. With bwrapoffsets to false, it |
|---|
| 87 | would parse to 12 25 2001 and then stop because all the offsets have |
|---|
| 88 | been used.</td> |
|---|
| 89 | </tr> |
|---|
| 90 | |
|---|
| 91 | <tr> |
|---|
| 92 | <td>breturnpartiallast</td> |
|---|
| 93 | |
|---|
| 94 | <td>Tells whether, when the parsed sequence terminates before yielding |
|---|
| 95 | the number of characters in the current offset, to create a token with |
|---|
| 96 | what was parsed, or to ignore it. For example the string "122501" with |
|---|
| 97 | offsets (2,2,4) with breturnpartiallast set to true will parse to 12 25 |
|---|
| 98 | 01. With it set to false, it will parse to 12 25 and then will stop |
|---|
| 99 | because there are only 2 characters left in the sequence instead of the |
|---|
| 100 | 4 that should have been there.</td> |
|---|
| 101 | </tr> |
|---|
| 102 | </table> |
|---|
| 103 | |
|---|
| 104 | <p>To use this class, pass an object of it anywhere a TokenizerFunction is |
|---|
| 105 | required. If you default constructruct the object, it will just return |
|---|
| 106 | every character in the parsed sequence as a token. (ie it defaults to an |
|---|
| 107 | offset of 1, and bwrapoffsets is true).</p> |
|---|
| 108 | |
|---|
| 109 | <p> </p> |
|---|
| 110 | |
|---|
| 111 | <h2>Model of</h2> |
|---|
| 112 | |
|---|
| 113 | <p><a href="tokenizerfunction.htm">TokenizerFunction</a></p> |
|---|
| 114 | <hr> |
|---|
| 115 | |
|---|
| 116 | <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src= |
|---|
| 117 | "http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" |
|---|
| 118 | height="31" width="88"></a></p> |
|---|
| 119 | |
|---|
| 120 | <p>Revised |
|---|
| 121 | <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->25 |
|---|
| 122 | December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38518" --></p> |
|---|
| 123 | |
|---|
| 124 | <p><i>Copyright © 2001 John R. Bandela</i></p> |
|---|
| 125 | |
|---|
| 126 | <p><i>Distributed under the Boost Software License, Version 1.0. (See |
|---|
| 127 | accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or |
|---|
| 128 | copy at <a href= |
|---|
| 129 | "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p> |
|---|
| 130 | </body> |
|---|
| 131 | </html> |
|---|