1 |
//: C07:StreamTokenizer.cpp {O} |
2 |
// From "Thinking in C++, 2nd Edition, Volume 2" |
3 |
// by Bruce Eckel & Chuck Allison, (c) 2001 MindView, Inc. |
4 |
// Available at www.BruceEckel.com. |
5 |
//{-g++295} |
6 |
|
7 |
#include "utils/StreamTokenizer.hpp" |
8 |
using namespace std; |
9 |
|
10 |
string StreamTokenizer::next() { |
11 |
string result; |
12 |
if(p != end) { |
13 |
insert_iterator<string> |
14 |
ii(result, result.begin()); |
15 |
while(isDelimiter(*p) && p != end) |
16 |
p++; |
17 |
|
18 |
// There is a bug here, if p is equal to end at this point, dereference it is a undefine behavior |
19 |
//while (!isDelimiter(*p) && p != end) |
20 |
while (p != end && !isDelimiter(*p)) |
21 |
*ii++ = *p++; |
22 |
} |
23 |
return result; |
24 |
} ///:~ |