
Pavol Droba wrote:
On Sat, Dec 24, 2005 at 09:06:51AM +0200, Alex Vinokur wrote:
"Pavol Droba" <droba@topmail.sk> wrote in message news:20051223180408.GP15407@lenin.felcer.sk...
Hi,
You might be able to do it using the string_algo find_iterator.
#include <boost/algorithm/string.hpp>
using namespace std; using namespace boost;
...
[snip] typedef split_iterator<string::iterator> string_find_iterator; ------------------------------------------------------------------------------
string_find_iterator It=make_find_iterator(str1, token_finder(is_space()));
That line produces the following error message:
error: conversion from `boost::algorithm::find_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' to non-scalar type `boost::algorithm::split_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >' requested
Sorry, I have fixed one error, but the other line was tied to it. the second line should be string_find_iterator It=make_split_iterator(str1, token_finder(is_space()));
Regards, Pavol
Thanks. Here is what I compiled: -------- #include<iostream> #include<boost/tokenizer.hpp> #include<boost/algorithm/string.hpp> #include<string> using namespace std; using namespace boost; void test() { string s = "ab cd \n xy z\n123"; typedef split_iterator<string::iterator> string_find_iterator; string_find_iterator It = make_split_iterator(s, token_finder(is_space())); const int maxi = 3; const int maxj = 2; for(int i=0; i < maxi; i++) { for(int j=0; j < maxj; j++) { if(It != string_find_iterator()) cout << "(" << i << ", " << j << ") : " << (*It) << endl; else break; } } } int main () { test(); return 0; } -------- And here is what I have got after running: --- (0, 0) : ab (0, 1) : ab (1, 0) : ab (1, 1) : ab (2, 0) : ab (2, 1) : ab --- Alex Vinokur email: alex DOT vinokur AT gmail DOT com http://mathforum.org/library/view/10978.html http://sourceforge.net/users/alexvn