私はboost::lambdaを使用して、文字列内の後続の空白を削除し、スペースを1つだけ残しています。このプログラムを試してみました。
#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'とタイプ'constchar'の安全でない組み合わせが動作中です」という警告も表示します。
ありがとう。