|
Boost : |
From: zaufi_at_[hidden]
Date: 2004-07-22 00:46:59
---------- Forwarded Message ----------
Subject: Proposal for String Algorithms Library
Date: Thursday 22 July 2004 09:43
From: zaufi_at_[hidden]
To: boost_at_[hidden]
hi boosters
I would like to propose one more algorithm to SAL -- squeeze. It removes
leading/trailing spaces and duplicate spaces between words. So sample string
" This is \n\n a test \n" become "This is\na test". I use this
function with XML/HTML related code to 'normalize' content... Hope this will
help to smbd else ;)
Have fun!
-------------------------------------------------------
Oops. Forget to paste code... ;)
<squeeze.cc>
std::string squeeze(const std::string& str)
{
std::string out;
//
bool is_start_of_line = true;
char last_space = 0;
for (std::string::const_iterator i = str.begin(); i != str.end(); ++i)
{
if (std::isspace(*i))
last_space = int(!is_start_of_line)
* (int(*i == '\n') * '\n'
+ int((*i != '\n') & (last_space != '\n')) * ' '
+ int(last_space == '\n') * last_space);
else
{
if (last_space)
{
out.push_back(last_space);
last_space = 0;
}
out.push_back(*i);
is_start_of_line = false;
}
}
return out;
}
</squeeze.cc>
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk