前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >string类中字符的大小写转换

string类中字符的大小写转换

作者头像
Enterprise_
发布于 2019-02-21 09:19:35
发布于 2019-02-21 09:19:35
1.7K00
代码可运行
举报
文章被收录于专栏:小L的魔法馆小L的魔法馆
运行总次数:0
代码可运行

今天做一道题,要用string类,涉及大小写转换,查看了C++文档,string类没有提供这样的方法,只好自己写。 之后是想到一个比较笨的方法,我把string当成一个容器,然后用迭代器一个一个来替换。

比如下面的是大写转小写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string temp;
string::iterator it;
for (it = temp.begin(); it != temp.end(); it++)
        if ((*it) < 'a')
            *it = *it + 32;

测试一下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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原型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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++官方文档

所以对于这个大小写转换只要这么写就行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
transform(temp.begin(),temp.end(),temp.begin(),::tolower); //转小写
transform(temp.begin(),temp.end(),temp.begin(),::toupper); //转大写

更改代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
}

结果一样:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年10月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
A+B for Matrices 及 C++ transform的用法
题目大意:给定两个矩阵,矩阵的最大大小是M*N(小于等于10),矩阵元素的值的绝对值小于等于100,求矩阵相加后全0的行以及列数。 1 #include<iostream> 2 using namespace std; 3 #define N 10 4 5 int main() 6 { 7 int n,m,i,j,a[N][N],b[N][N],s; 8 while(cin>>m) 9 { if(m==0) break; 10 cin>>n
猿人谷
2018/01/17
1.1K0
A+B for Matrices  及 C++ transform的用法
C++11:基于STL对string,wstring进行大小写转换
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/80206022
10km
2019/05/25
4.4K0
练习一下C++string型大小写转换函数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
1.3K0
【C++】STL 容器 - string 字符串操作 ⑧ ( string 字符串相关算法 | 字符串转换 - std::transform 函数 | 字符串翻转- std::reverse 函数 )
C++ 的 std::transform 函数是 <algorithm> 头文件中的一个通用算法 , 用于对指定范围内的元素进行转换 ;
韩曙亮
2023/12/18
1.2K0
【C++】STL 容器 - string 字符串操作 ⑧ ( string 字符串相关算法 | 字符串转换 - std::transform 函数 | 字符串翻转- std::reverse 函数 )
C++大小写转换和性能
本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题。
用户7886150
2021/02/25
1.5K0
用php实现字符串大小写转函数的功能
在php中,最终使用的是c语言的toupper,tolower函数将字符进行大小写转换。因此需要定义一个字符大小写转换的函数。
写PHP的老王
2019/08/12
1K0
你写的字符(串)忽略大小写比较函数真的严谨吗?
有时我们比较两个字符串时不考虑它们是大写还是小写;举个例子,在这种情况下我们认为“BanAna”和“baNaNA”是等价的。
xiaoxi666
2018/10/29
1.2K0
万字长文【C++】函数式编程【上】
https://www.manning.com/books/functional-programming-in-c-plus-plus
用户9831583
2022/06/16
2.6K0
万字长文【C++】函数式编程【上】
9.1 C++ STL 排序、算数与集合
C++ STL(Standard Template Library)是C++标准库中的一个重要组成部分,提供了丰富的模板函数和容器,用于处理各种数据结构和算法。在STL中,排序、算数和集合算法是常用的功能,可以帮助我们对数据进行排序、统计、查找以及集合操作等。
微软技术分享
2023/08/17
2250
【C++】STL 算法 ⑦ ( 二元谓词使用场景 - 大小写不敏感 set 集合 | tolower 函数 - 将字符转为小写字母 | 基于 tolower 实现大小写不敏感的比较函数对象 )
本篇博客中 , 实现一个 set 集合 , 存放 英文字母 组成的字符串 , 且 大小写不敏感 ;
韩曙亮
2024/01/09
1810
【C++】STL 算法 ⑦ ( 二元谓词使用场景 - 大小写不敏感 set 集合 | tolower 函数 - 将字符转为小写字母 | 基于 tolower 实现大小写不敏感的比较函数对象 )
C++之STL标准模板库——从入门到精通
通俗说:STL是Standard Template Library(标准模板库),是高效的C++程序库,其采用泛型编程思想对常见数据结构(顺序表,链表,栈和队列,堆,二叉树,哈希)和算法(查找、排序、集合、数值运算…)等进行封装,里面处处体现着泛型编程程序设计思想以及设计模式,已被集成到C++标准程序库中。 具体说:STL中包含了容器、适配器、算法、迭代器、仿函数以及空间配置器。 STL设计理念:追求代码高复用性以及运行速度的高效率,在实现时使用了许多技术。
海盗船长
2020/08/27
1K0
8.1 C++ STL 变易拷贝算法
C++ STL中的变易算法(Modifying Algorithms)是指那些能够修改容器内容的算法,主要用于修改容器中的数据,例如插入、删除、替换等操作。这些算法同样定义在头文件 <algorithm> 中,它们允许在容器之间进行元素的复制、拷贝、移动等操作,从而可以方便地对容器进行修改和重组。
微软技术分享
2023/08/16
2680
三种方式实现C语言中大小写字母的转换
用户11036582
2024/03/21
8820
三种方式实现C语言中大小写字母的转换
C++字符串常见操作函数最全总结
在做题过程中经常用到字符串,有时候费了很大力气去写一个函数,结果最后发现C++已经封装好了此类函数。。。所以花点时间总结一下,这里参考了:http://www.cplusplus.com/reference/
全栈程序员站长
2022/09/06
1.2K0
【C语言】字母转换大小写的三种方法
当我们会使用toupper()函数和tolower()函数后,下面我们来看一下如何不借助库函数来实现字母的大小写转换。即构造自己的字母大小写转换函数。
修修修也
2024/04/01
3450
【C语言】字母转换大小写的三种方法
7.1 C++ STL 非变易查找算法
C++ STL 中的非变易算法(Non-modifying Algorithms)是指那些不会修改容器内容的算法,是C++提供的一组模板函数,该系列函数不会修改原序列中的数据,而是对数据进行处理、查找、计算等操作,并通过迭代器实现了对序列元素的遍历与访问。由于迭代器与算法是解耦的,因此非变易算法可以广泛地应用于各种容器上,提供了极高的通用性和灵活性。
微软技术分享
2023/08/16
3260
C++字符串自制常用工具函数(格式化组装、各类型转字符串、拆分数组、替换子串、去除字符、大小写转换)
C++对字符串组装没有一个很直接好用的函数,这里利用C的snprintf()函数,提供一个可用的函数:
Cloudox
2021/11/23
2.3K0
字符处理——大小写转换编程思路扩展
前面我们实现了首字母大写、转换大写、转换小写3个功能,如果再实现一个大小写互换,有了前面的基础,实现起来应该没什么大问题:
xyj
2020/07/28
7210
python 中字符串大小写转换
    python中字符串的大小写转换和判断字符串大小写的函数小结: 一、pyhton字符串的大小写转换, 常用的有以下几种方法: 1、对字符串中所有字符(仅对字母有效)的大小写转换,有两个方法: print 'just to test it'.upper() #所有字母都转换成大写 JUST TO TEST IT print 'JUST TO TEST IT'.lower() #所有字母都转换成小写 just to test it 2、对字符串中的字符(仅对字母有
py3study
2020/01/06
1.3K0
tolower、toupper、count_if函数总结说明
如果 c 有相对应的小写字母,则该函数返回 c 的小写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。 以下是一个例子,演示如何使用 tolower 函数将字符串中的字母全部转换为小写形式:
海盗船长
2023/10/11
3860
推荐阅读
相关推荐
A+B for Matrices 及 C++ transform的用法
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文