0

Below is my code

string str2 = "1, 2, 3, 4, 5, 6, 7, 8";
string output;  
typedef std::tr1::sregex_token_iterator sti;  
const sti end;  
for(sti i(str2.begin(), str2.end(), regex(",\\s"), -1); i != end; ++i)  
{
  //output += "\"" + *i + "\", ";
  output += "\"";
  output += *i;
  output += "\", ";  
}      
cout<<output.substr(0, output.length() - 2)<<endl;

the result is

"1", "2, 3, 4, 5, 6, 7, 8"

But what I expected was

"1", "2", "3", "4", "5", "6", "7", "8"

How could I solve the problems?
Thanks a lot

ps:i am using the <regex> library of visual c++ 2008

2
Contributors
5
Replies
6
Views
6 Years
Discussion Span
Last Post by stereomatching
0

After a lot of struggles, I found out the problems
change

for(sti i(str2.begin(), str2.end(), regex(",\\s"), -1); i != end; ++i)

to

regex r(",\\s");
for(sti i(str2.begin(), str2.end(), r, -1); i != end; ++i)

never use temporary regex

0

Now I have another question

string s = "point(1,1,:)=[303 225 1];point(2,5,:)=[238,121,1];";
  regex pattern("((\\d+)\\s(\\d+)\\s(\\d+)|(\\d+),(\\d+),(\\d+))");
  const sregex_token_iterator end;
  std::vector<int> v;
  v.push_back(2);
  v.push_back(1);
      
  for(sregex_token_iterator i(s.begin(), s.end(), pattern, v); i != end; )
  {
    cout<<*i++;
    cout<<" "<<*i++<<endl;
  }    
  cout<<endl;

I hope the output could be

225 303
121 238

But the results are totally wrong
How could I solve the problems?
Thanks a lot

PS:

regex pattern("(\\d+),(\\d+),(\\d+)");

or

regex pattern("(\\d+)\\s(\\d+)\\s(\\d+)");

are fine, but they would only output "225 303" or "121 238"

Sorry but, how to mark as solved?
Thanks

0

What is the wrong result you are getting? Please tell us as much as you can about what is wrong and we will be able to help you more easily.

PS. To mark as solved: just above the reply box at the bottom of the thread will be a bit about the thread being solved. It's easy enough to do when you look in the right place :)

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.