C++ for_each传入参数的问题

//以下代码为何提示重复定义了成员方法,希望大神能给予解答

#include
#include
#include
#include
#include
//#include "myClass.h"

using namespace std;
void eraseStr11(const char & c,string & s)
{
if(!isalpha(int(c)))
s.erase(c);
}

int main()
{
string str;
getline(cin, str);
string strTmp(str);

for_each( str.begin(), str.end(), bind2nd(ptr_fun(eraseStr11), str));
cout << strTmp;

system("pause");
return 0;

}

c++

4个回答

为了回答你这个问题,我花了一上午的时间, 就为了给你一个结果。

如下:

#include
#include
#include
#include
#include

using std::cout; //只导入 cout 对象
using std::endl; //只导入 endl 对象
using std::cin;

using std::bind1st;
using std::bind2nd;

using std::ptr_fun;

using std::string;
using std::vector;

//过滤掉字符串里面的数字
void eraseStr(const char c,string &s)
{
static int index = 0;

unsigned char data = c - 0x30;

if( (data >= 0) && (data <= 9) )
    s.erase(index,1);
else
    ++index;

}

int main()
{

vector<char> v_c;
string str;

cout << "请输入一行字符:" ;

getline(cin, str);
string strTmp(str);

cout << "strTmp = " << strTmp << endl;

for ( int i = 0; i < str.size() ; i++ )
    v_c.push_back(str[ i ]);

 for_each( v_c.begin(), v_c.end(), bind2nd(ptr_fun(eraseStr),strTmp) );
 cout << strTmp;

return 0;

}

结果如下:
图片说明

fer1989321
fer1989321 精神可嘉,微薄分数不成敬意,嘿嘿。 我的问题是不是出在对string类应用了stl算法?
接近 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 赞一个这种研究的精神
接近 2 年之前 回复

c++11已经出来了这么多年,使用lambda表达式会更加方便呀。
string strTemp = str;
for_each( str.begin(), str.end(), &strTemp{if(!isalpha(int(c)))s.erase(c);});

bajianxiaofendui
Simple Simple for_each( str.begin(), str.end(), [&strTemp](char c){if(!isalpha(int(c)))s.erase(c);});
接近 2 年之前 回复

头文件被系统干掉了,如下,给你补上 :

图片说明 一定要采纳我的哦 。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐