c++如何用迭代器输出大小写字母?
这是我的目录:
- 回顾c语言我们是如何实现大小写字母转换的
- 实现大小写母的转换
- 用函数实现
回顾c语言我们是如何实现大小写字母转换的
#define _CRT_SECURE_NO_WARNINGS
//大小写字母(alphabet)的转换 大->小
#include<stdio.h>
int main()
{int ch = 0;//初始化ch,因为getchar的返回值是int,所以初始化的类型也是intwhile ((ch = getchar())!=EOF)//循环输入一个字符ch,这个字符不能读取失败,否则就返回EOF{printf("%c\n", ch+32);//输出一个字符getchar();//读走‘/n';}return 0;
}
这里很快我就写出了一种简单的方法,利用ascll码值大小写字母的相差值32的规律。如果是实现小写字母转换成大写字母呢?我们试想一下大写字母+32的ascll码值就转换成了我们的小写字母,反过来小写字母-32的ascll码值是不是我们的大小字母,这是一种换位思考,对于初学者来说还是蛮重要的,验证一下吧:
思考:但是这样我们一次只能输入一个字符,如果是一串字符呢?如果我想输入一串大写字母再输入一串小写字母呢?
实现大小写母的转换
方法一:
回到我们思考的问题,一次可能输入的不是一个字符,而是一串字符,我们可以用数组来实现,想要输出大写字母和小写字母,这里我们就可以写一个for循环来判断是转换成大写还是小写问题就迎刃而解了!c语言可以用同样的方法,这里我用的C++的语法:
#include <iostream>
using namespace std;
int main()
{char a[100];//定义存放100个字符的字符串数组int i = 0;cout << "请输入一串字符:\n";cin >> a;//输入一串字符(一个字符也行)for (; a[i]; i++){if (a[i] >= 'a' && a[i] <= 'z')a[i] -= 32;else if (a[i] >= 'A' && a[i] <= 'Z')a[i] += 32;}for (i = 0; a[i]; i++)cout << a[i];//输出打印转换后的字符串cout << endl;//换行system("pause");//system ("pause")意思就是让程序暂停一下,然后按任意键继续,初学的时候最多见于程序的末尾处,用于看运行结果,避免程序一闪而过。return 0;
}
划红线处是因为我加了system(“pause”);,方便我们观察,对于初学者这样写有好处!
用函数实现
更简单的方法就是用函数来实现,用我们的toupper和tolower两个函数:
tolower() 如果参数是大写字符,则返回其小写,否则返回该参数.
toupper() 如果参数是小写字母,则返回其大写,否则返回该参数.
方法一:直接上手用
#include <iostream>
using namespace std;
int main()
{cout << (char)toupper('a') << endl;//输出大写字母Acout << (int)('A')<< endl;//把字符转换成ascll码的值65cout << (char)tolower('B') << endl;//输出小写字母bcout << (int)tolower('B') << endl;//输出转换成小写字母的ascll码值98return 0;
}
为了让大家看的更清楚,我把转换后的askll码值也打印出来了。
方法二:用迭代器来实现
#include<iostream>
#include<cctype>
#include<vector>
//vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:
#include<vector>;
using namespace std;
int main()
{vector<char> vch;//定义存放字符型序列的向量容器对象vch//string类型会默认结尾是一个空字符,如果一个string只含有一个空字符,则该string为空。vector<char>则不同,含有一个空字符后,就不在是空的。int n;char elem;//定义字符型元素cout << "请输入大小写字符的个数:";cin >> n;cout << "请输入" << n << "个大小写字符:";for (int i = 0; i < n; ++i){cin >> elem;vch.push_back(elem);// push_back(elem)在数组最后添加字符数据elem}vector<char>::iterator it = vch.begin();//定义了一个名为it的变量,它的数据类型是由vector<char>定义的iterator类型for (it; it != vch.end(); ++it){//小写字母转换成大写字母if (*it >= 'a' && (*it) <= 'z')//这里如果直接取迭代器it会报错 所以取内容然后取地址不会报错*it = toupper(*it);else if (*it >= 'A' && (*it) <= 'Z')//大写字母转换成小写字母*it = tolower(*it);}cout << "大小写转化之后的结果:";//输出vector<char>::iterator itera = vch.begin();//定义了一个名为itera的变量,它的数据类型是由vector<char>定义的iterator类型,itera变量接受返回的迭代器对象vch并指向字符串的第一个字符for (itera; itera != vch.end(); ++itera)//itera不等于指向字符串的末尾(最后一个字符的下一个位置),itera就++cout << *itera;//对迭代器加*,即获得该迭代器所指的元素cout << endl;return 0;
}
相信C语言代码我们能写出来,C++代码我们一样能写出来!
注意一些用法:
一.为什么我要定义elem?
elem:elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型,为了使程序可读性强,并且便于修改,让elem代表多种的数据类型,也就是为int、char等等的数据类型,起了一个别名,在头文件中定义:typedef char elem; //抽象元素类型为char类型,这样定义之后,下面的程序中elem所定义的元素就是char类型的了 ,如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。
二.迭代器取地址问题?
1.不能直接取迭代器的地址
2.对迭代器加*,即获得该迭代器所指的元素
3.对迭代器加*,再加&,就是该元素的地址
三.C++中string类下的begin,end,rbegin,rend的用法是什么?
语法:iterator begin();
解释:begin()函数返回一个迭代器,指向字符串的第一个元素.
end
语法:iterator end();
解释:end()函数返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置).
rbegin
语法:const reverse_iterator rbegin();
解释:rbegin()返回一个逆向迭代器,指向字符串的最后一个字符。
rend
语法:const reverse_iterator rend();
解释:rend()函数返回一个逆向迭代器,指向字符串的开头(第一个字符的前一个位置)。
c++如何用迭代器输出大小写字母?相关推荐
- 输入大写字母,输出大小写字母及其对应的ASCII码;输入语句,将大写字母变成小写字母;将句子中每个单词的第一个字母转换为大写字母;输入一串字符,分别算出英文字母、空格、数字、其他字符的个数(C)
养成好习惯,点个赞 再走:有问题,欢迎私信.评论,我看到都会回复的 以下题目是对于ASCII码的一些练手题 在c语言中 使用%c输出的是字符本身 使用%d输出的是字符对应的ASCII 在ASCII中, ...
- java 输出 大小写字母 a-z A-Z
public class Test04 {public static void main(String[] args) {char da = 'A';char xiao = 'a';for (int ...
- 计算机组成原理实验输出大小写字母,计算机组成原理实验指导书-201511修订.doc...
计算机组成原理 实验指导书 马莉 修订 2015年11月 目 录 实验一 脱机运算器实验1 实验二 基础汇编语言程序设计3 实验三 存储器部件实验与多级中断实验10 实验四 微程序控制器实验17 附录 ...
- c语言输入字母程序退出,C语言作业:输入一串字母区分大小写和数字,要求分别输出大小写字母和数字以及个数,并按ESC退出。...
满意答案 CHY小爱 2013.11.09 采纳率:50% 等级:12 已帮助:38207人 这种题该自己做吧. #include #define MaxLen 255 int main() { ...
- 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和
题目描述: 输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和. 思路: 1.创建输入对象 2.输入字符串 3.利用正则将字母分离出,剩余的每一个字符串即为待统计的每一个数字,存入字符串数组 ...
- 显示所有大写字母python_python 输出所有大小写字母的方法
用一行输出所有大(小)写字母,以及数字,首先要记住该字母所对应的ASCII码,百度一下就可以看到,ASCII可显示字符 (这里只列举数字和字母) 二进制 十进制 十六进制 图形 0011 0000 4 ...
- python输入一个字符串、计算其中小写字符的个数_编写程序,输入一个字符串,统计其中大小写字母数字和其他符号的个数并输出,要求统计过程在函数COUNT中进行...
答:对比ASCII码,在程序中小写字母96 答:a = "aAsmr3idd4bgs7Dlsf9eAF" 请将a字符串的数字取出,并输出成一个新的字符串. 请统计a字符串出现的每个 ...
- 7-85 根据输入的空气污染指数,输出相应的信息。7-86 分支结构——大小写字母判断7-87 A±B
目录 7-85 根据输入的空气污染指数,输出相应的信息. 7-86 分支结构--大小写字母判断 7-87 A±B 7-85 根据输入的空气污染指数,输出相应的信息. 分数 5 全屏浏览题目 切换布局 ...
- 将一个只含有大小写字母的字符串大写变成小写,小写变成大写后输出。
如题.将一个只含有大小写字母的字符串大写变成小写,小写变成大写后输出. 输入一个有大写有小写的字符串,把字符串中的字符大小写反转输出 输入样例 1 AcDe 输出样例 1 aCdE c++代码如下 # ...
最新文章
- Android中 TextView的使用
- 【转】BT5汉化步骤
- (转)postman中 form-data、x-www-form-urlencoded、raw、binary的区别
- 安装mysql5.7出现问题_本地安装Mysql5.7过程中出现的一系列问题
- java实现什么接口进行排序_使用Java中Comparator接口实现自定义排序
- android关闭应用及获取运营商ISP,判断sim卡属于哪个运营商
- mysql 针对table的查看命令行
- Java-实现简单取色器
- 活动 | 腾讯×Nature Research:42问AI与机器人的未来
- cad查看_天正电气CAD教程之标注实例讲解
- html毕业答辩ppt,毕业论文答辩ppt(要求和制作技巧)
- ac管理器管理员密码忘记了_你应该使用密码管理器吗
- babyheap_0ctf_2017 详解
- 如何防止CSRF攻击
- N个数选出M个最小或最大值算法
- 看完你就知道交换机端口该搭配什么光模块了
- 友盟集成微信授权登录,切换微信账号,登录无法切换微信信息问题
- kaggle 收不到手机验证码
- 后台推送消息给app_小米加入统一推送联盟!避免多种APP后台运行,国产手机春天来了...
- java 小数乘法_java复习题69151-_人人文库网
热门文章
- cad脚本合适_CAD之轮胎说|半导体行业观察
- 作为前端,我对业务的一点理解
- 蚁群算法(Ant System)(AS)
- P2444 [POI2000]病毒(ACAM上找环)
- MC9S12芯片知识相关
- CV视觉论文alexnet学习笔记(二)
- 爬虫实战—轻松爬取全国40城5000+地铁站点数据!附源码和数据集
- dnf剑魂buff等级上限_DNF:剑魂变“天帝”,破极/光之兵刃分不清,白白损失几千万金币...
- wince5使用access数据库_Windows CE USB Function Driver驱动简析(1)-驱动架构及UfnPdd函数(基于WinCE5.0...
- 排序算法系列之(一)——选择排序清新脱俗的一面