transform(str.begin(), str.end(), str.begin(), toupper);

将str转为大写

编译error:no matching function for call to ‘transform(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, )

这个函数的定义:

template OutIter transform(InIter start, InIter end, OutIter result, Func unaryFunc)

它要求参数和返回值都要是char。Linux中将toupper实现为一个宏而不是函数:
/usr/lib/syslinux/com32/include/ctype.h:

/* Note: this is decimal, not hex, to avoid accidental promotion to unsigned */
#define _toupper(__c) ((__c) & ~32)
#define _tolower(__c) ((__c) | 32)

__ctype_inline int toupper(int __c)
{
return islower(__c) ? _toupper(__c) : __c;
}

__ctype_inline int tolower(int __c)
{
return isupper(__c) ? _tolower(__c) : __c;
}

有三种解决方法:

1.因为在全局命名空间中有实现的函数(而不是宏),所以重新明确命名空间,这并不是总奏效,但是在g++环境中没有问题:

transform(str.begin(), str.end(), str.begin(), ::toupper);

2.自己重写一个函数

inline char charToUpper(char c)
{
return std::toupper(c);
}

3.强制转化:将toupper转换为一个返回值为int,参数只有一个int的函数指针。

transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper);

4.补充。LAMBDA表达式

transform(str.begin(), str.end(), str.begin(), [](int c) {return toupper(c); });

原文:https://blog.csdn.net/winting_qiqi/article/details/21397211

C++中错误no matching function for call to transform相关推荐

  1. 【C++错误处理】no matching function for call to transform

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 初学C++哈,不知道这个错误是不是很silly,高手轻拍.情况如下: #include #include #in ...

  2. Android之jni编译出现no matching function for call to ‘_JNIEnv::GetJava(JNIEnv* , Java VM**)‘解决办法)‘

    1.问题 jni编译出现这个错误 no matching function for call to '_JNIEnv::GetJava(JNIEnv* &, Java VM**) 2.原因 自 ...

  3. 【错误记录】Visual Studio 中编译 NDK 报错 ( no matching function for call to ‘cacheflush‘ cacheflush(); )

    文章目录 一.报错信息 二.报错信息 一.报错信息 使用 Visual Studio 2019 编译 Android 平台的 NDK 项目 ; 编译时报错 ; 报错信息 : 1>./native ...

  4. QT编程错误解决——error: no matching function for call to

    实现信号与槽函数绑定机制中出现如下错误: error: no matching function for call to 'Widget::connect(QPushButton*&, voi ...

  5. 神经网络中,设计loss function有哪些技巧?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 神经网络中,设计loss function有哪 ...

  6. JavaScript中错误正确处理方式,你用对了吗? 1

    JavaScript的事件驱动范式增添了丰富的语言,也是让使用JavaScript编程变得更加多样化.如果将浏览器设想为JavaScript的事件驱动工具,那么当错误发生时,某个事件就会被抛出.理论上 ...

  7. php js 报错信息,JavaScript中错误异常的分析(附示例)

    本篇文章给大家带来的内容是关于JavaScript中错误异常的分析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我的建议是不要隐藏错误,勇敢地抛出来.没有人会因为代码出现 ...

  8. c语言中错误c2062,C/C++编译器错误消息大全

    C/C++编译器错误消息大全 初始值设定项可能括在了括号中.为避免该问题,请将声明符括在括号中或使其成为 typedef. 在编译器将表达式作为类模板参数检测时也可能导致此错误;使用 typename ...

  9. matlab nargin不对称,在matlab中错误使用 nargin 错误: 文件:dfun.m 行:30 列:4 未结束的...

    在matlab中错误使用 nargin 错误: 文件:dfun.m 行:30 列:4 未结束的 |浏览2420次 2017/12/05 15:54 在matlab中错误使用 nargin 错误: 文件 ...

最新文章

  1. pandas 删除 csv 中 unnamed 列
  2. 活久见!北大博士干了半年外卖骑手,写出 AI 伦理论文登上顶刊,“系统知道一切”...
  3. log4j配置不生效
  4. wukong引擎源码分析之搜索——docid有序的数组里二分归并求交集,如果用跳表的话,在插入索引时会更快...
  5. java操作js文件_JS操作文件
  6. Java各种数据类型的转换
  7. 数据结构 3-0 栈与队列总结
  8. Fiddler Everywhere 3.2.1 Crack
  9. 学生宿舍管理系统需求分析
  10. Ti的C28x系列的DSP(28069)(28377D)使用经验,CMD文件
  11. 《高效能人士的七个习惯》阅读笔记
  12. .Net Core裁剪图片并存入数据库
  13. MSDC 4.3 接口规范(23)
  14. python导入随机库_怎么用python导入随机库?
  15. 服务器系统安装——以Dell R710为例
  16. 区块链+慈善究竟帮助过谁?
  17. 算法作业2:分而治之 (持续更新)
  18. phpcms之管理栏目添加单网页遇到的英文名称已经存在的问题
  19. 乖乖,很想读给你的诗--[人生]
  20. 关于万网虚拟主机如何建立多个网站

热门文章

  1. Redis配置主从数据,实现主从库之间数据同步
  2. PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
  3. 真实案例引起的对系统健壮性的思考
  4. SSH 连接慢 与 反向解析
  5. ERP笔记2-善用SVN对系统环境进行配置和组织
  6. WinDBG工具简介(.net大会中张银奎先生介绍)
  7. vue中使用axios发送ajax请求
  8. BZOJ 4174 tty的求助 莫比乌斯反演
  9. Codeforces 486D D. Valid Sets
  10. C#后台利用正则表达式查找匹配字符