GCC 下 tranform 调用 toupper, tolower 出错原因及解决
来源:互联网 发布:下载淘宝软件并安装 编辑:程序博客网 时间:2024/06/01 08:55
今天用 transform 将一个字符串进行大小写转换时,意外发现 GCC 下竟然会报错,之前在 VS2013 一直可以用,即如下代码:
#include <iostream>#include <algorithm>using namespace std;int main(){ string str = "heLLo"; transform(str.begin(), str.end(), str.begin(), toupper); cout << str << endl; transform(str.begin(), str.end(), str.begin(), tolower); cout << str << endl; return 0;}
没错,就是这么一段简单的代码,GCC 竟然报错
error: no matching function for call to 'transform(std::basic_string<char>::iterator, std::basic_string<char>::iterator, std::basic_string<char>::iterator, <unresolved overloaded function type>)'|
后来网上查资料得知,貌似 GCC 的 toupper, tolower 是宏而非函数(本人未考证),这里仅给出解决办法:
#include <iostream>#include <algorithm>using namespace std;int main(){ string str = "heLLo"; transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper); cout << str << endl; transform(str.begin(), str.end(), str.begin(), (int (*)(int))tolower); cout << str << endl; return 0;}
即将 toupper, tolower 转化为一个返回值为 int, 参数为 int 的函数指针,该问题即可解决。
0 0
- GCC 下 tranform 调用 toupper, tolower 出错原因及解决
- tolower/toupper
- toupper 和 tolower
- toupper, tolower, isupper, islower
- strdup tolower toupper 实例
- tolower函数toupper函数
- toupper()与tolower()的编写
- ROS Tranform出错简易处理 tf出错现象及解析
- 一天一个CRT函数 __toascii tolower toupper
- 尽量使用ToUpper比较,避免使用ToLower
- toupper 和tolower 的返回值
- 蓝桥杯--大小写转换(toupper,tolower使用)
- C++ tolower函数 与 toupper函数
- C语言tolower和toupper的用法
- stl string 的 trim split replace tolower toupper
- toupper和tolower的返回值是int型值
- C++ string大小写转换以及transform,tolower,toupper,用法
- eclipse调用python模块是出错及解决
- Vigenère密码题解
- 这些年,建立的做人做事的准则
- 剑指offer面试题八:旋转数组的最小数字
- 无可奈何数据库——无法连接到(local)
- hdu 2594 Simpsons’ Hidden Talents(KMP)
- GCC 下 tranform 调用 toupper, tolower 出错原因及解决
- leetcode之 Factorial Trailing Zeroes
- 【cocos3.9+box2d+tileMap】踩过的那些坑
- 重头来过-只为不遗憾,提高班半年学习总结!
- iOS中内存管理基本概念
- 【两道不会写的题】
- [原创]《穷人的小孩难成功-走出人生负面循环》视野的继承与影
- JS中的prototype
- 深入了解Java之三(集合方面)