1 |
gezelter |
1490 |
//: 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 |
tim |
1492 |
#include "utils/StreamTokenizer.hpp" |
8 |
gezelter |
1490 |
|
9 |
tim |
1827 |
|
10 |
gezelter |
1490 |
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 |
tim |
1737 |
|
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 |
gezelter |
1490 |
*ii++ = *p++; |
22 |
|
|
} |
23 |
|
|
return result; |
24 |
|
|
} ///:~ |