John Maddock wrote:
Tommy Li wrote:
I think I'm missing something obvious. Anyone have any idea? By the way, I can't even match one newline char with "\\n" though they are obviously there.
Well here's a sample program that obviously shows it does work :-)
#include
#include <iostream> int main(int,char**) { boost::regex e("\\n"); std::string s("one\ntwo\nthree"); boost::sregex_token_iterator i(s.begin(), s.end(), e, -1), j; while(i != j) { std::cout << "<" << *i << ">" << std::endl; ++i; } }
which outputs:
<one> <two> <three>
Just as expected.
John.
Great. Thanks a ton. The problem I was having was that I was using getline to read from stdin, which stripped the newlines (duh). Changing it to while(!cin.eof()) input.append(1, cin.get()); fixed it. By the way, do you have a better way of reading the entire stream, including newlines, into a string?