string类中字符的大小写转换
来源:互联网 发布:佛山mac专柜 编辑:程序博客网 时间:2024/06/08 18:47
今天做一道题,要用string类,涉及大小写转换,查看了C++文档,string类没有提供这样的方法,只好自己写。
之后是想到一个比较笨的方法,我把string当成一个容器,然后用迭代器一个一个来替换。
比如下面的是大写转小写:
string temp;string::iterator it;for (it = temp.begin(); it != temp.end(); it++) if ((*it) < 'a') *it = *it + 32;
测试一下代码:
#include<iostream>#include<string>using namespace std;int main(void){ string temp; string::iterator it; cin >> temp; for (it = temp.begin(); it != temp.end(); it++) //大写转小写 if ((*it) < 'a') *it = *it + 32; cout <<"转换成小写之后" <<temp << endl; for (it = temp.begin(); it != temp.end(); it++) //小写转大写 if ((*it) > 'Z') *it = *it - 32; cout <<"转换成大写之后" <<temp << endl; return 0;}
测试输入
AsdFghJkL
测试输出
转换成小写之后asdfghjkl
转换成大写之后ASDFGHJKL
测试图片:
但是后面我发现其他大佬有更简单的做法,使用模板函数transform可以轻松解决这个问题,我们只需要提供一个函数对象,例如将char转成大写的toupper函数或者小写的函数tolower函数。
transform原型:
template <class InputIterator, class OutputIterator, class UnaryOperator> OutputIterator transform (InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperator op){ while (first1 != last1) { *result = op(*first1); // or: *result=binary_op(*first1,*first2++); ++result; ++first1; } return result;}
以上的原型来自文档
C++官方文档
所以对于这个大小写转换只要这么写就行:
transform(temp.begin(),temp.end(),temp.begin(),::tolower); //转小写transform(temp.begin(),temp.end(),temp.begin(),::toupper); //转大写
更改代码
#include<algorithm>#include<iostream>#include<string>using namespace std;int main(void){ string temp; cin >> temp; transform(temp.begin(),temp.end(),temp.begin(),::tolower); //转小写 cout <<"转换成小写之后" <<temp << endl; transform(temp.begin(),temp.end(),temp.begin(),::toupper); //转大写 cout <<"转换成大写之后" <<temp << endl; return 0;}
结果一样:
阅读全文
0 0
- string类中字符的大小写转换
- c++ string 字符大小写的转换
- C#中字符,字符串的大小写转换
- C++ 中字符大小写转换的函数
- Java中,string的大小写转换
- C++ 中 string大小写的转换
- 字符的大小写转换
- 字符的大小写转换!
- 字符大小写的转换
- 大小写字符的转换
- string的大小写转换
- string 的大小写转换
- string类大小写转换
- string.h 中的字符大小写转换
- C++: string的大小写转换
- stl::string的大小写转换
- C++ string的大小写转换
- C++: string的大小写转换
- Eclipse 安装 Spring & Hibernate 辅助插件
- 利用Navicat导数据
- 【软考之旅】网络层次与主要设备对应关系
- 可查询最值的栈 -- 算法小结
- 用户空间和内核空间通讯之【Netlink 】
- string类中字符的大小写转换
- MATLAB图像处理-高斯/拉普拉斯/均值/中值滤波
- 聊聊Vue.js的template编译
- angularjs中多个控制器中共享数据
- 八、swift3.0枚举和结构体
- PyQt5学习笔记3_PyInstaller生成exe
- stdafx有什么用(包含相关问题分析)
- mysql之repair table 修复表札记
- mac自身支持ntfs的读写