今天做一道题,要用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;
}

结果一样:

string类中字符的大小写转换的更多相关文章

  1. String类中常用的操作

    一.获取: 1.获取字符串的长度(注意是方法,不是跟数组的属性一样的) int length(); 1 public static void getLength(){ 2 String s = &qu ...

  2. java面向对象中的String类中12种常用的方法

    1.字符串与字符数组的转换 字符串可以使用toCharArray()方法变成一个字符数组,也可以使用String类的构造方法把一个字符数组变成一个字符串. public class StringAPI ...

  3. String类中的常用方法

    String类 一.转换成String方法 1.public String(); 空参构造 初始化一个新创建的 String 对象,使其表示一个空字符序列 2.public String(byte[] ...

  4. js中实现字母大小写转换

    js中实现字母大小写转换主要用到了四个js函数: 1.toLocaleUpperCase  2.toUpperCase3.toLocaleLowerCase4.toLowerCase 下面就这四个实现 ...

  5. Java——String类中的compareTo方法总结

    String类的定义:    java.lang  类 String   java.lang.Object      java.lang.String 所有已实现的接口:Serializable, C ...

  6. String类中的equals()方法:

    String类中的equals()方法: public boolean equals(Object anObject) { //如果是同一个对象 if (this == anObject) { ret ...

  7. Java用代码演示String类中的以下方法的用法

    用代码演示String类中的以下方法的用法 (1)boolean isEmpty(): 判断字符串是不是空串,如果是空的就返回true (2)char charAt(int index): 返回索引上 ...

  8. 2019.4.1今日一练String类中的方法

    package com.pjc.objects;                        replaceAll()方法的理解引出正则表达式import java.util.regex.Patte ...

  9. String类中intern方法的原理分析

    一,前言 ​ 昨天简单整理了JVM内存分配和String类常用方法,遇到了String中的intern()方法.本来想一并总结起来,但是intern方法还涉及到JDK版本的问题,内容也相对较多,所以今 ...

随机推荐

  1. <form> 标签的 enctype 属性

    值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编码.在使用包含文件上传控件的表单时,必须使 ...

  2. JSP数据库综合练习

    一.问题概述         实现了数据库的增删改查和分页显示.         分页显示:mysql String cmd = "select * from t_user limit &q ...

  3. MarkDown和流程图诠释你的代码

    写在前面:首先感谢导师-猴哥对我的认可(求多分享点编程经验.工具.多开课),学习编程是一个痛苦和快乐的过程,希望大家共勉 本文介绍MarkDown的基本语法.使用MarkDown画简单的流程图.使用X ...

  4. spark1.统计句子中特定内容

    val logFile = "./README.md" // Should be some file on your server. val conf = new SparkCon ...

  5. PowerBuilder与嵌入浏览器交互

    准备工作1. 新增一个Application应用,新增一个窗口.2. 在窗口中新增一个OLE控件:Microsoft Web Browser,命名为old_1.3. 新增一个TextBox网址输入控件 ...

  6. February 27 2017 Week 9 Monday

    All the bright precious things fade so fast. 所有的光鲜靓丽都敌不过时间. Try to make some things endurable and et ...

  7. IT人们给个建议

    开篇声明:我本身是中学老师,师范类大学计算机专业毕业,现在马上研究生学位就要拿上了,平时在学校搞网络维护什么的,事少,业余时间充足,也不想拘泥于做老师拿点工资,觉得白学计算机了,所以也搞些业余开发,如 ...

  8. 解决Could not get lock /var/cache/apt/archives/lock

    在ubuntu apt-get upgrade的时候,遇到: E: Could not get lock /var/cache/ apt/archives/lock - open (11 Resour ...

  9. BZOJ3531:[SDOI2014]旅行(树链剖分)

    Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰 ...

  10. java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout

    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content&q ...