boost :: lambdaを使用して文字列内の後続の空白を削除します。空白は1つのみです。私はこのプログラムを試しました。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== ' ')
上記progamで
(boost::lambda::_1 == ' ') && (boost::lambda::_2== ' '))
は異なっています。また、「C4805の警告= '==':bool型の安全でない混合型と「const char」型の操作」
ありがとうございました。 C及びC++ == Bは== xがより非常に異なっている(A == X)& &(B == x)は、 前者は以下のように解釈される(A == B)== xの
boost :: regexはどうですか? '/(\ s)+/$ 1'を置き換えますか? ;-) – Dario