我想以最短的代码方式计算字符串中的所有数字.我试过这样的方式:

#include

#include

unsigned countNumbers(const std::string s) {

return count_if(s.begin(), s.end(), isdigit);

}

错误信息是:

a.cc: In function ‘unsigned int countNumbers(std::string)’:

a.cc:5:45: error: no matching function for call to ‘count_if(std::basic_string::const_iterator, std::basic_string::const_iterator, )’

a.cc:5:45: note: candidate is:

/usr/include/c++/4.6/bits/stl_algo.h:4607:5: note: template typename std::iterator_traits<_inputiterator>::difference_type std::count_if(_IIter, _IIter, _Predicate)

我知道count_if()想要的函数如下:

bool(* f)(char);作为第三个参数,所以我试图强制转换函数:

unsigned countNumbers(const std::string s) {

return count_if(s.begin(), s.end(), reinterpret_cast(isdigit));

}

错误信息是:

a.cc: In function ‘unsigned int countNumbers(std::string)’:

a.cc:5:80: error: overloaded function with no contextual type information

我也尝试了一个更长的版本,它给出了相同的编译错误:

unsigned countNumbers(const std::string s) {

typedef bool ( * f_ptr )( char );

f_ptr ptr = reinterpret_cast(isdigit);

return count_if(s.begin(), s.end(), ptr);

}

我想避免的解决方案是创建一个适配器的函数:

#include

#include

bool is_digit(char c) {

return isdigit(c);

}

unsigned countNumbers(const std::string s) {

return count_if(s.begin(), s.end(), is_digit);

}

我的问题是如何在std :: algorithm的函数中使用函数int(* f)(int),这些函数需要bool(* f)(int)而不创建适配器函数而不使用lambda表达式?

当我知道如何解决问题时,我会遇到更多问题,例如:

>检查字符串是否可打印:find_if_not(s.begin(),s.end(),isprint)

>检查字符串是否包含“,.!?…”:find_if(s.begin(),s.end(),ispunct)

和更多…

由于std :: algorithms,我只想知道如何在标准C中有更多的字符串可能性

我在互联网上搜索很长时间,我找到了similar problem,但我找不到解决办法

计算机二级C语言中isdigit,C使用带字符串的标准算法,带有isdigit的count_if,函数转换...相关推荐

  1. 计算机二级c语基础知识,计算机二级C语基础知识整理.doc

    计算机二级C语基础知识整理 1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程.算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计. ...

  2. python语言程序设计 梁勇_计算机二级教程 Python语言程序设计,第9章Python标准库概览...

    第九章学习知识导图 考点主要是: 1) 标准库: turtle库(必选) 2) 标准库: random库(必选).time库(可选) 3) 作者归纳:这章考大题和选择题的读程序题,本章结束,pytho ...

  3. c语言限制字符数,C语言中“不受限制”的字符串函数总结.pdf

    C语语言言中中"不不受受限限制制"的的字字符符串串函函数数总总结结 "不不受受限限制制的的"字字符符串串函函数数 按 <C和指针>中所说,那些常用的 ...

  4. 计算机二级考试有截图工具吗,计算机二级等级考试上机考试操作步骤(带详细操作截图).docx...

    计算机等级考试上机考试操作步骤(二级为例) 一.进入考试系统 单击桌面上的"考试系统"图标,进入考试启动界面."考试启动界面"如图1 所示. 图1 二.输入考生 ...

  5. 【C语言进阶深度学习记录】十二 C语言中的:字符和字符串

    文章目录 1 C语言中的单引号和双引号 1.1 双引号带来的BUG 2 总结 1 C语言中的单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量,存储于全局的只读存 ...

  6. 为什么在C语言中,用scanf输入字符串时,不需加

    因为字符串变量名在 scanf 语句里 表示指针 (地址) 例如: char s[80]; scanf("%s",s); --这里的 s 已是地址. 当然,写成 scanf(&qu ...

  7. c语言中,从键盘输入一个长方体的长宽高,用函数实现求长方体的体积,由主函数调用该函数,要求长方体的长、宽、高从主函数输入,长方体的体积作为函数返回值。

    #include <stdio.h> int fun(int a,int b,int c) {     int v; v = a*b*c;     printf("长方形的体积为 ...

  8. 计算机二级考试C语言选择题知识点总结,易错点总结(持续更新)

    最近要考计算机二级c语言,是因为自我感觉 自己的编程能力实在是太差了,课堂上有没有好好的学,所以简单抽时间看看二级的题库,做一些经常出错的知识点的总结!有错的希望大家能够提出来,谢谢大家了! 但是知识 ...

  9. 【计算机二级Python】模拟试卷第2套选择题

    相关链接 [计算机二级Python]考试攻略及资料汇总 [计算机二级Python]模拟试卷第1套选择题 [计算机二级Python]模拟试卷第2套选择题 [计算机二级Python]模拟试卷第2套选择题 ...

最新文章

  1. Python学习之——编码方式
  2. 设置DIV半透明CSS代码:
  3. 百万数据php7取出循环_PHP7带来了哪些重要的变化
  4. Java图片压缩 BufferedImage Linux 下代码阻塞不工作
  5. 工业机器人用铸铁牌号_锻钢牌号表示方法你了解么?
  6. java多线程采集+线程同步-【多线程数据采集之四】
  7. 浅谈管理系统操作日志设计(附操作日志类)
  8. 洛谷 P4392 Sound 静音问题
  9. JS对数据进行判空操作
  10. 【每周荐书系列】——《认知盈余》
  11. 使用moy快速开发后台管理系统(一)
  12. 有一种神奇的性格叫——INTJ
  13. 深圳南山学区房_查查吧学区房地图
  14. python代码实现ASCII码转换
  15. 第九届泰迪杯A题(1)
  16. 嵌入式硬盘录像机与视频采集卡的不同
  17. Mysql5.7开启远程登陆
  18. Sqlite源码解读(十一)
  19. 中天易税服务器网站,中天易税网上认证系统
  20. 人工智能的中心化问题,只能靠区块链去解决?

热门文章

  1. 笔记本插网线无法联网解决方法
  2. vscode 快捷键高效写代码
  3. 陈皓:谈谈数据安全和云存储
  4. java局部变量赋值给全局变量,干货整理
  5. 知道计算机组装,电脑组装不担心被电脑店套路,就要懂得如何查看电脑的硬件配置...
  6. Tableau基础 | 如何应对Excel的格式
  7. 轻松下载echarts的中国地图的js文件
  8. 获取淘宝商品实时销量2022年最新算法
  9. 原生js实现轮播图——小肉包
  10. 尉氏短期计算机培训,在尉氏烘焙短期培训时尚魅影烘焙培训