在学习C++时,自己写了一个函数,使用string来实现小写字符串转换为大写字符串程序,小试牛刀了一把。分享一下。
下面是运行截图:
下面是我写的代码:
#include <iostream>
#include <cctype>//for toupper()
#include <string>//for string class to use
using namespace std;
void convert(string & ps);
int main()
{
string str;
cout<<"请输入一串字符(q表示退出): ";
cin>>str;
while("q"!=str)
{
convert(str);
cout<<"请输入一串字符(q表示退出): ";
cin>>str;
}
cout<<endl;
system("pause");//使程序结束时暂停画面
return 0;
}
void convert(string & str)
{
//string对象只能用成员函数size()来获取string对象的字符数,不能用strlen()(头文件为cstring.h)。strlen()是统计字符数组的字符数用的
unsigned int i=0;
char ch;
cout<<"输入了"<<str.size()<<"个字符.";
cout<<"\n转换成大写字母:";
while(i<str.size())//并不是以空字符来表示字符串的结尾,因此不能用末尾是否是空字符来判定字符串结尾
{
//字符串对象可以像数组一样使用
ch = toupper(str[i]);
cout<<ch;
i++;
}
cout<<endl;
return;
}
代码很简单,只是给不熟悉C++的一个小程序代码参考而已,勿喷。
程序功能逻辑:
在main函数中循环检测string变量的值是否为单个的字母q,以确定是否要结束程序。如果不为q,则不断的循环程序,可以实现多次转换。然后就将输入所得的string变量的值传入自己写的函数,在main函数的while循环中,控制程序的整体的流程,而准换流程则放在convert函数中执行和输出,这样避开逻辑混乱。
在convert中,用变量i对string变量中的每一个字母进行遍历递增索引,与字符串的长度对比,以确定字符串遍历结束。这里可以看出可以将string当做字符数组一样使用,很方便。因为string重载了操作符[],所以可以这么使用。每遍历一个字母,都调用toupper函数将字母转换为大写字母。这里就是程序的核心了。
你可以扩展下,就可以有神奇的效果。比如,在这里你可以对字母运算,按照一定的规则,比如对字符编码+1或者通过一个公式计算,得到一个新的编码,则输出的就是编码后的字母,这个就是加密的原理了。然后通过公式的逆计算,就是解密过程了。至于还有什么神奇的用途,自己去扩展吧。
convert里的while循环,用于将字符串中的每一个字母转换为大写的。