字母的大小写转换(tolower、toupper、transform)

字母的大小写转换(tolower、toupper、transform)

1. tolower()、toupper()函数

(这个在之前的一篇文章 “字符串中需要掌握的函数总结(1)”中有较为详细的介绍。)

【代码如下】

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s="bdioICvnHns",s1,s2;
	for(int i=0;i<s.length();i++)
	{
		s1.push_back(tolower(s[i]));
		s2.push_back(toupper(s[i]));
	}
	cout<<"tolower转变后:"<<s1<<endl;
	cout<<"toupper转变后:"<<s2<<endl;
}

【运行结果】

2.transform()函数(头文件是 <algorithm>)

上面的 toupper、tolower只能一次转换单个字母,要转化整个字符串,则需遍历,若不想遍历,那么可以选择用 transform。

【代码如下】

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
	string s="bdioICvnHns";
	
	transform(s.begin(),s.end(),s.begin(),::tolower);
	cout<<"string字符串-tolower转变后:"<<s<<endl;
	
	transform(s.begin(),s.end(),s.begin(),::toupper); 
    cout<<"string字符串-toupper转变后:"<<s<<endl;
    
    char ch[]={'m','L','k','t','P','h','F'};
    
    transform(ch,ch+7,ch,::tolower);
    cout<<"char字符串-tolower转变后:"<<ch<<endl;
    
    transform(ch,ch+7,ch,::toupper);
    cout<<"char字符串-toupper转变后:"<<ch<<endl;
    
}

【运行结果】

【说明】

transform(s.begin(),s.end(),s.begin(),::toupper) 中的  “: :” 是作用域解析运算符,它用于指定一个特定的命名空间或类中的成员。当你在代码中使用 using namespace std; 时,你告诉编译器在当前的作用域中考虑 std 命名空间中的名字。然而,标准库中的某些函数,比如 toupper,并不在 std 命名空间中,而是在全局命名空间中。

当你调用 transform(s.begin(), s.end(), s.begin(), ::toupper); 时,要使用 : :toupper 来明确指出 toupper 函数是在全局命名空间中,而不是在 std 命名空间中。这是因为 transform 函数需要知道具体使用哪个 toupper 函数,而全局命名空间中的 toupper 是你想要的。

如果你省略了 ::,编译器会尝试在当前作用域(包括由于 using namespace std; 而引入的 std 命名空间)中查找toupper。由于 std 命名空间中没有toupper,编译器会报错,因为它找不到这个函数。所以,:: 在这里的作用是确保编译器在全局命名空间中查找 toupper 函数,而不是在 std 命名空间中。这是必要的,因为 toupper 函数实际上是在全局命名空间中定义的。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.jc7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值