Boost logo

Boost Users :

From: Umut Tabak (umut.tabak_at_[hidden])
Date: 2007-05-06 06:03:49


Dear all,

I am new to boost and tried to use the Tokenizer lib. But I have a
problem. When I initialize a tokenizer object in a loop and tokenize
that, it is ok on the first iteration. But on the second and subsequent
iterations, even if I try to initialize the object with some different
string, the object always tokenizes the first initialization. So I see
that I have to reset the tokenizer object at each iteration. But I could
not understand how to do this from the tokenizer man pages.

Here is some code :
// define tokenizer and separator
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
boost::char_separator<char> sep(" = ");
..
.
.
//initialize and use in a loop
while(getline(inFile,readLine)){
      //skip empty lines for count operation
      if(!readLine.empty()){
        // each line is tokenized
        tokenizer tokens(readLine, sep);
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<======
        // tokens are pushed on a vector
        for (tokenizer::iterator tok_iter = tokens.begin();
          tok_iter != tokens.end(); ++tok_iter)
          lineTokens.push_back(*tok_iter);
        // lineTokens hold the tokens
        // check if the configuration file is valid by the count
        // function of the set
        if(configVars.count(lineTokens[0])==1){ // means existent so
this is valid
        // assign the read value to the right class data member
          switch(line_count){
            // switch can be extended depending on the configuration file
            // decide on the line number of the configuration file
            case 0:// line 1
              vlInputFileName=lineTokens[1];
              break;
            case 1:// line 2
              vlProjectFileName=lineTokens[1];
              break;
            case 2:// line 3
              vlcatvbsFileName=lineTokens[1];
              break;
            case 3:// line 4
              vlVbModuleName=lineTokens[1];
              break;
            case 4:// line 5
              pathToVLProjectFile=lineTokens[1];
              break;
            // case lines can be added here
            // ...
            default:
              ;
              break;
          }
        }
        else
          throw std::runtime_error("The configuration file variable(s)
are not valid!");
        // clear the line for the next operation
        readLine.clear();
        line_count+=1;
        // I should reset tokenizer object but I could not do
<========================= Reset tokenizer after each iteration

Your help is very much appreciated

Best regards,

Umut


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net