计算机二级C语言中isdigit,C使用带字符串的标准算法,带有isdigit的count_if,函数转换...
我想以最短的代码方式计算字符串中的所有数字.我试过这样的方式:
#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,函数转换...相关推荐
- 计算机二级c语基础知识,计算机二级C语基础知识整理.doc
计算机二级C语基础知识整理 1.1 算法 算法:是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程.算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计. ...
- python语言程序设计 梁勇_计算机二级教程 Python语言程序设计,第9章Python标准库概览...
第九章学习知识导图 考点主要是: 1) 标准库: turtle库(必选) 2) 标准库: random库(必选).time库(可选) 3) 作者归纳:这章考大题和选择题的读程序题,本章结束,pytho ...
- c语言限制字符数,C语言中“不受限制”的字符串函数总结.pdf
C语语言言中中"不不受受限限制制"的的字字符符串串函函数数总总结结 "不不受受限限制制的的"字字符符串串函函数数 按 <C和指针>中所说,那些常用的 ...
- 计算机二级考试有截图工具吗,计算机二级等级考试上机考试操作步骤(带详细操作截图).docx...
计算机等级考试上机考试操作步骤(二级为例) 一.进入考试系统 单击桌面上的"考试系统"图标,进入考试启动界面."考试启动界面"如图1 所示. 图1 二.输入考生 ...
- 【C语言进阶深度学习记录】十二 C语言中的:字符和字符串
文章目录 1 C语言中的单引号和双引号 1.1 双引号带来的BUG 2 总结 1 C语言中的单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量,存储于全局的只读存 ...
- 为什么在C语言中,用scanf输入字符串时,不需加
因为字符串变量名在 scanf 语句里 表示指针 (地址) 例如: char s[80]; scanf("%s",s); --这里的 s 已是地址. 当然,写成 scanf(&qu ...
- c语言中,从键盘输入一个长方体的长宽高,用函数实现求长方体的体积,由主函数调用该函数,要求长方体的长、宽、高从主函数输入,长方体的体积作为函数返回值。
#include <stdio.h> int fun(int a,int b,int c) { int v; v = a*b*c; printf("长方形的体积为 ...
- 计算机二级考试C语言选择题知识点总结,易错点总结(持续更新)
最近要考计算机二级c语言,是因为自我感觉 自己的编程能力实在是太差了,课堂上有没有好好的学,所以简单抽时间看看二级的题库,做一些经常出错的知识点的总结!有错的希望大家能够提出来,谢谢大家了! 但是知识 ...
- 【计算机二级Python】模拟试卷第2套选择题
相关链接 [计算机二级Python]考试攻略及资料汇总 [计算机二级Python]模拟试卷第1套选择题 [计算机二级Python]模拟试卷第2套选择题 [计算机二级Python]模拟试卷第2套选择题 ...
最新文章
- Python学习之——编码方式
- 设置DIV半透明CSS代码:
- 百万数据php7取出循环_PHP7带来了哪些重要的变化
- Java图片压缩 BufferedImage Linux 下代码阻塞不工作
- 工业机器人用铸铁牌号_锻钢牌号表示方法你了解么?
- java多线程采集+线程同步-【多线程数据采集之四】
- 浅谈管理系统操作日志设计(附操作日志类)
- 洛谷 P4392 Sound 静音问题
- JS对数据进行判空操作
- 【每周荐书系列】——《认知盈余》
- 使用moy快速开发后台管理系统(一)
- 有一种神奇的性格叫——INTJ
- 深圳南山学区房_查查吧学区房地图
- python代码实现ASCII码转换
- 第九届泰迪杯A题(1)
- 嵌入式硬盘录像机与视频采集卡的不同
- Mysql5.7开启远程登陆
- Sqlite源码解读(十一)
- 中天易税服务器网站,中天易税网上认证系统
- 人工智能的中心化问题,只能靠区块链去解决?