boost :: lambda를 사용하여 문자열의 후속 공백을 제거하고 하나의 공백 만 남깁니다. 나는이 프로그램을 시험해 보았다.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;
}
주석 처리 된 행은 잘 작동하지만 주석 처리되지 않은 행은 올바르게 작동하지 않습니다.
어떻게 위의 progam에
(boost::lambda::_1 == ' ') && (boost::lambda::_2== ' '))
에서
(boost::lambda::_1 == boost::lambda::_2== ' ')
다르다. "C4805 경고 : '==': 'bool'유형과 'const char'유형의 안전하지 않은 혼합"
감사합니다.
C에서
부스트 :: 정규식은 어떻습니까? '/ (\ s) +/$ 1'을 바꿉니 까? ;-) – Dario