两个函数,一个是由大写转小写,一个是识别名字中的姓和名
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
//例CH30_E2中,函数ToLowercase用于将一个string对象从大写变为小写。代码如下所示。
string ToLowercase(string str)
{
char ch;
string str1;
str1.resize(128);
int Size = size(str);
for (int i = 0; i < Size; i++)
{
ch = str[i];
if (ch >= 'A'&&ch <= 'Z')
{
ch = ch- 'A' + 'a';
str1.append(1,ch);
}
else if (ch== ' ' ||ch =='!'||ch=='?')
{
str1.append(1, ch);
}
else
{
throw - 101;
}
}
return str1;
}
//例CH30_E3:姓名字符串由两部分组成,中间以多个空格或Tab分开,要求写一个函数将姓和名都提取出来。若输入“LiMing",则解析出姓为“Li"名为"Ming"。
string XingmingTQ(string str)
{
string str1;
string str2 ;
string str3;
int posKG = str.find(' ');
int posKG1 = str.find(' ', posKG + 1);
cout << posKG<<' ' << posKG1 << endl;
if (posKG <0&&posKG1<0)
throw -101;
else if(posKG >=0 && posKG1 == -1)
{
str1 = str.substr(0, posKG);
str2 = str.substr(posKG + 1);
cout << "xing:" << str1 << endl;
cout << "ming:" << str2 << endl;
}
else if (posKG >= 0 && posKG1 >=0)
{
str1 = str.substr(0, posKG);
str2 = str.substr(posKG + 1,posKG1-posKG);//str.substr的第二个参数是拷贝的长度
str3= str.substr(posKG1 + 1);
cout << "xing:" << str1 << endl;
cout << "Mming:" << str2 << endl;
cout << "FMming:" << str3 << endl;
}
return str1, str2, str3;
}
int main()
{
try {
string str("WHAT THE HELL?");
string str1;
str1 = ToLowercase(str);
cout << str1 << endl;
string str4 = "Edward Kullen Rechard";
string str5 = XingmingTQ(str4);
return 0;
}
catch (int n)
{
cout << "out of range" << endl;
}
}
结果如下所示