Nor*_*ert 11 c++ foreach boost stl
我目前很难找到修正std :: vector中每个字符串的正确语法.
我试过了
std::vector<std::string> v;
std::for_each(v.begin(), v.end(), &boost::trim);
Run Code Online (Sandbox Code Playgroud)
它在MSVC7.1中给了我以下错误消息.
错误C2784:'_ Fn1 std :: for_each(_InIt,_InIt,_Fn1)':无法使用[_Ty = std :: string]从'std :: vector <_Ty> :: iterator'中推断'T1'的模板参数:看到'std :: for_each'的声明
错误C2896:'_ Fn1 std :: for_each(_InIt,_InIt,_Fn1)':不能使用函数模板'void boost :: algorithm :: trim(SequenceT&,const std :: locale&)'作为函数参数:参见声明'boost :: algorithm :: trim'
如果我明确地给出了模板参数trims,那么编译器无法找到第二个参数,虽然它默认设置.
std::for_each(v.begin(), v.end(), &boost::trim<std::string>);
Run Code Online (Sandbox Code Playgroud)
错误C2198:'void(__ cdecl*)(std :: string&,const std :: locale&)':通过指针到函数调用的参数太少
我想知道为每个元素调用trim的正确语法如何v.
Man*_*uel 23
您还需要绑定trim的第二个参数(语言环境):
std::vector<std::string> v;
std::for_each(v.begin(), v.end(),
boost::bind(&boost::trim<std::string>,
_1, std::locale() ));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6445 次 |
| 最近记录: |