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++
0

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;

}

结果如下:
图片说明

1
fer1989321
fer1989321 精神可嘉,微薄分数不成敬意,嘿嘿。 我的问题是不是出在对string类应用了stl算法?
大约一年之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 赞一个这种研究的精神
大约一年之前 回复
0

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

0
bajianxiaofendui
Simple Simple for_each( str.begin(), str.end(), [&strTemp](char c){if(!isalpha(int(c)))s.erase(c);});
12 个月之前 回复

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

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

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++ for_each传入参数的问题
//以下代码为何提示重复定义了成员方法,希望大神能给予解答rnrn#includern#include rn#includern#include rn#include rn//#include "myClass.h"rnrnusing namespace std;rnvoid eraseStr11(const char & c,string & s)rnrn if(!isalpha(int(c)))rn s.erase(c);rnrnrnint main()rnrn string str;rn getline(cin, str);rn string strTmp(str);rnrn for_each( str.begin(), str.end(), bind2nd(ptr_fun(eraseStr11), str));rn cout << strTmp;rnrn system("pause");rn return 0;rn
for_each()算法的使用
for_each()算法非常灵活,允许不同方式访问、处理、修改每一个元素。UnaryProcfor_each(InputIterator beg, InputIterator end, UnaryProc op)1、 对区间[beg, end)中每一个元素调用:op(elem)2、 返回op的一个拷贝(副本),自C++11起,返回的op已被改动过 n3、 op可以改动元素。 n4、 op的任
vector的for_each以及lambda匿名函数使用
for_each循环取得数组的每一个元素lambda匿名函数
泛型算法之std::for_each
 for_each,允许对区间内的元素进行修改,当然transform也可以实现相同的操作,只是transform效率较低,因为transform是通过拷贝函数返回值实现。当然C++11之后for_each变得不再重要,因为range-based for更加直观简单。nn接下来我们看一下for_each的实现:nnntemplate&amp;lt;class _InIt,n class _Fn&amp;gt; i...
C++11 for循环新用法、for_each 用法
c++11 for循环多了新的语法#include<iostream>n#include<algorithm>n#include<vector>nusing namespace std;int main()n{n vector<int> vec;n for(int i=0;i<10;++i)n {n vec.push_back(i);n } for(int
c/c++:for each遍历 __VA_ARGS__ 中的每一个元素
因为项目需要,要大量定义类似的枚举类型。rnrntypedef enum test{rn test_1,test_2,test3....rn}test;rnrn手工写实在太多了,而且容易出错,于考虑用可变参数宏:__VA_ARGS__ 来实现,关键就是要实现对__VA_ARGS__中每个参数元素的遍历。 rn下面是现实代码,真正调用的宏只有一个FL_FOREACH, rnFL_FOREACH实现对__VA_...
C++11 for_each函数与Qt中foreach函数比较
#include <iostream>n#include <string>n#include <algorithm>n#include <vector>n#include <iterator>n#include <QCoreApplication>n#include <QDebug>nusing namespace std;void add(int& i)n{n i++;n}void out(
【C++ STL应用与实现】26: 如何使用std::for_each以及基于范围的for循环 (since C++11)
本文总结了STL算法中for_each, for_each算法很常用,以致于C++11定义了一个新的语法: `range based for loop`, 也就是基于范围的for循环,直接在语法层面把for_each的功能给实现了。本文给出一些使用`for_each`和rang-based for loops的用法,并说明for loops的实现原理和使用注意事项。
c++基础之for_each使用和源码
nn首先,要使用for_each要包含文件algorithmnn上面对小圆括号()进行了操作符重载nnnn可以看到for_each的内部实现机制为对每个元素实现_Func()nn并且会自动用每个元素替代函数中的形参nn为了更简单的看到for_each的用处,可以比较下面两段代码nnnn nn ...
for_each如何传递多个参数
我们在用vector这个容器的时候是不是经常会用到for_each,然而,很JB锤子的是什么呢,它只能传递一个参数。这就有点局限性了,不过,解决办法总是有的,nSTL这个标准库和另一个标准库一起用就可以了,那就是BOOST这个标准库,n这个库里面有一个函数bind();它的作用就是绑定函数,n当然要使用它,前提是先安装boost,这个到处都可以下载,教程也有很多,我前面的文章也有。
for_each 源码剖析
一:用法解析rn函数原型:rnrntemplate rn   Function for_each (InputIterator first, InputIterator last, Function fn);rnrn功能:rn对[ first , last )范围内的元素执行Function操作。rn例子:rn// for_each examplen#include // std::co
C++:14.C++11 新标准:foreach、右值引用&&、lambda表达式、语言级别的线程与锁
关键字和新语法nn1、delete      指定删除类的成员方法        nn在类的成员方法后面写  = delete  就将该成员方法删除,用户无法调用。nn智能指针unique_ptr就是将对象的拷贝构造和operator=  delete删除了nn2、auto        自动的 根据右表达式,自动推倒出左边变量的类型。nnnauto it = vec.begin() 根据等号...
for_each算法和transform算法区别
主要介绍STL中transform()算法和for_each()算法的区别
c++中的那些foreach循环
1. c++中的 for_each 函数nfor_each()事实上是個 function template,其源码如下nlink:http://www.cplusplus.com/reference/algorithm/for_each/?kw=for_eachntemplate&amp;amp;lt;typename InputIterator, typename Function&amp;amp;gt;nFunction ...
现代C++ 基于范围的for和for_each语句
现代C++ 基于范围的for和for_each语句
for_each 返回值
for_each 返回值实例详解;
C++ STL函数详解
STL函数详解:rnrn查找函数:find()、find_if()、adjacent_find()、find_first_of()、find_end();计数函数:count()、count_if();匹配函数:mismatch()、equal();查找函数:search()、search_n();复制函数:copy()、copy_backward();交换函数:swap()、iter_swap(
C++ for_each构造函数和析构函数的调用,仿函数,lambda
//for_each()调用三次析构函数nn  仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 n  有些功能的的代码,会在不同的成员函数中用到,想复用这些代码。 n    1)公共的函数,可以,这是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量,再说为了复用这么一片代码,就
C++ for_each学习笔记
一、学习完iterator之后,遍历容器我们会写出这样的代码:n#include n#include nnusing namespace std;nnint main() {n int ia[] = {1, 2, 3};n vector ivec(ia, ia + sizeof(ia) / sizeof(int));nn for(vector::const_iterator iter = ive
整数转换成字符串 简单函数
整数转换成字符串 简单函数 c语言编写 传入参数
for_each + lambda 优雅的写代码
写惯了objective c 的 block代码,实现在方便,省事,代码简洁,c++的lambda也可以写得很简洁,记录下boost::property_tree::ptree pt;n try {n boost::property_tree::ini_parser::read_ini(path, pt); // 打开读文件 n accountitem itm;
for_each问题
我想这样做,请问怎样实现rn我有一个数组,array_testvaluern我sort()排序rnsort(array_testvalue.begin,array_testvalue.end)rn然后我想取出从第10个开始到最后的所有元素的累加和,然后求平均。
C++11:for_each_file遍历目录处理文件
经常我们需要对某个目录下的所有文件进行处理,这里我们需要列出目录下的文件,并找出符合要求的文件,然后才开始真正的处理工作。大部分情况下,这个流程都差不多,只是文件处理的内容不同,可不可以做一个类似#include&lt;algorithm&gt;中的for_each一样的函数,来把把这个过程抽象化呢? rn基于这个想法,实现了for_each_file函数 rn代码如下:#include &lt;functional&gt;
C++中的foreach用法
在c++中,一般人只知道foreach分开写为“for each”时的用法,却不知道“foreach”的用法。不多说,直接上代码。QStringList listTemp;n QString strTemp1;n QString strTemp2; tempList.append("aaa");n tempList.append("bbb");n tempList.ap
第46条:for-each循环优先于传统的for循环
看看这段代码有啥问题:nenum Suit { CLUB, DIAMOND, HEART, SPADE }nenum Rank { ACE, DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT,nNINE, TEN, JACK, QUEEN, KING }n...nCollection&amp;lt;Suit&amp;gt; suits...
【jq错误】在each代码块内使用continue报语法错误
原因:nn在each代码块内不能使用break和continue,nn解决方法:nn要实现break和continue的功能的话,要使用其它的方式:nbreak----用returnfalse;ncontinue--用returntruen...
springboot中使用quartz
springboot中使用quartz,包括持久化和非持久化操作 解决service注入问题 介入指定job中传入参数问题
c语言中的参数传递问题(传value)
#include rn#include rnvoid swap(int *a , int *b);rnvoid swap1(int *a , int *b);rnvoid swap(int *a , int *b)rn{rn    int *temp = NULL;rn    temp =(int *)malloc(sizeof(int));   //申请了一块交换中介空间rn    *temp
c语言,问题1:传入参数私自变化?问题2:调用函数后程序无故死掉? 原因分析
1:c语言,在被调用函数里并未改变传入参数,参数却变化了的原因分析nn2:c语言,调用函数后程序无故死掉原因分析nn1:我在函数1中调用函数2,由函数1向函数2传入(uint32_t a,uint32_t b),在函数里并未写改变传入的参数a的语句,结果参数a在操作时竟然不是传入的值,后来找到原因是传入参数a,b,在函数2中操作b时将a值覆盖了,造成操作a时并不是传入的值,
C++新特性之lambda表达式在for_each循环中的使用及for循环新写法
以前,在lambda表达式没有进入标准的时候,对容器的遍历等涉及到使用函数指针的情况,一般人会懒得使用std::for_each,也许只是一个短短的几句话,却要单独写个函数,或函数对象,写的代码反而不如自己用for循环来的快。rn但是,C++11引入了lambda表达式后,一切都变的简单了!rnrnrnrn1.lambda表达式rnrnlambda表达式是一个匿名函数,用它可以非常方便的表示一个函
for_each遍历vector的问题
先贴代码rnrnGCD_2 函数使用递归求2个数的最大公约数rn[code=c]rnint GCD_2(int nNum1, int nNum2)rnrn if (nNum1 > nNum2)rn rn nNum1 = nNum1 ^ nNum2;rn nNum2 = nNum1 ^ nNum2;rn nNum1 = nNum1 ^ nNum2;rn rn if (nNum1 == 0)rn rn return nNum2;rn rn return GCD_2(nNum2 % nNum1, nNum1);rnrn[/code]rnrnGCD_N 函数循环调用 GCD_2 取得N个数的最大公约数rn[code=c]rnint GCD_N(std::vector vecNums)rnrn int nRes = vecNums[0];rn // for (std::vector::iterator it = vecNums.begin() + 1; it != vecNums.end(); it++)rn // rn // nRes = GCD_2(nRes, *it);rn // rn auto bf = std::bind(std::function(GCD_2), nRes, std::placeholders::_1);rn std::for_each(vecNums.begin() + 1, vecNums.end(), bf);rn return nRes;rnrn[/code]rn用for可以实现(注释部分),但是用for_each的话,nRes不能随每次迭代而更新,求解如何实现每次迭代能取得 GCD_2 的返回值赋给nRes。
c++ STL vector容器(int类型、自定义对象类型、嵌套容器)for_each回调函数打印
STL vector容器的初次见面
for_each 和函数对象问题!
for_each怎么能每个对象都能调用啊!rn比如:rntemplate
传入参数的问题
之前写了一个函数,就是从一个数据库的表中取出最后的五个记录,以前对,但事后不知道怎么就不对了rnrn我的程序如下。rnrn另外,问一下,怎么从一个表中取出最后的 n 条记录呢rnrnFatal error: Call to a member function rowcount() on a non-object 这个是报错rnrn[code=PHP]rnassign("InfRec", $InfRec);rnrn $smarty->display("front_page.htm");rnrn?>rnrnquery("SELECT * FROM $_tabelName"); // 感觉这行有问题rn $recordtotal = $rs->rowcount() - $_newNum; // 这行就报错了rnrn $rs = $DB->query("SELECT * FROM $_tabelName LIMIT $recordtotal, $_newNum"); rnrn $sql = "SELECT * FROM chinese_jobs LIMIT 0 , 30";rnrn $i = $_newNum;rnrn while( $row = $rs->fetch() )rn $i -= 1;rn $Topnews[$i] = $row[Title];rn rn return $Topnews;*/rnrnrn?>rn[/code]
函数对象,一元谓词,二元谓词,预定义函数对象
find_if , sort , for_each 的使用 for_each(v1.begin(), v1.end(), ShowElemt&amp;lt;int&amp;gt;() ) ; 要使用预定义函数对象需要包含 functional 头文件vector&amp;lt;int&amp;gt;::iterator it = find_if(v1.begin(), v1.end(), myint ) sort(v3...
非修改性序列算法之for_each
for_each是algorithm头文件包含的stl算法之一。一、for_each的使用#include<iostream>n#include<vector>n#include<algorithm>using namespace std;template<typename T>nint pushNum(T &vec, int first, int last) {n int ret = 0;
关于for_each()的问题
如果我的for_each()在自己写的类中, 那在for_each()中的那个函数是否一定要定义为rnstatic. 如为static, 如何访问我类中的成员变量
for_each()的函数传递问题
关于for_each)()的函数传递有些疑问,先看以下代码:rn代码1:rnclass testrnrnpublic:rn void fun1();rn void fun2(int m);rnprivate:rn vector v;rn;rnrnvoid test::fun1()rnrn //我想对v中的每个数据调用fun2函数, 这里的第三个参数该怎么写?rn //如果fun2为非成员函数,第三个参数可以直接写fun2.像这种情况该rn //怎么写呢?rn for_each(v.begin(), v.end(), ???); rnrnvoid test::fun2(int m)rnrn //do somthingrnrnrn代码2:rnrnclass test; //test为上面的test类rnrnclass test2rnrnpublic:rn void fun3();rnprivate:rn vector v2;rn;rnrnvoid test2::fun3()rnrn test t;rn //我想对v2中的每个数据调用t.fun2函数, 这里的第三个参数该怎么写?rnrn for_each(v2.begin(),v2.end(), ???);rnrnrn请问该如何传递第三个参数呢??
for each循环(数组打印)
for each回顾 n例子:nnpublic class Testn{n public static void main(String[] args) n {n int a[]={1,2,3,4,5,6,7,8,9,10};n for(int n:a)n System.out.print(n+&quot; &quot;);n }n}nn输出结果为:nnE:...
mybatis参数解说
MyBatis传入参数与parameterType.doc
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题