Я использую boost::lambda для удаления последующих пробелов в строке, оставляя только один пробел. Я пробовал эту программу.
#include <algorithm>
#include <iostream>
#include <string>
#include <boost/lambda/lambda.hpp>
int main()
{
std::string s = "str str st st sss";
//s.erase( std::unique(s.begin(), s.end(), (boost::lambda::_1 == ' ') && (boost::lambda::_2== ' ')), s.end()); ///< works
s.erase( std::unique(s.begin(), s.end(), (boost::lambda::_1 == boost::lambda::_2== ' ')), s.end()); ///< does not work
std::cout << s << std::endl;
return 0;
}
закомментированная строка работает нормально, а не закомментированная - нет.
Как
(boost::lambda::_1 == boost::lambda::_2== ' ')
отличный от
(boost::lambda::_1 == ' ') && (boost::lambda::_2== ' '))
в вышеуказанной программе. Комментарий также дает мне предупреждение о том, что «предупреждение C4805: '==': небезопасное сочетание типа 'bool' и типа 'const char' в работе»
Спасибо.
/(\s)+/$1
? ;-) - person Dario   schedule 23.07.2009