C++ primer(第五版) 练习 6.17
题目:编写一个函数,判断string对象中是否含有大写字母。
编写另一个函数,把string对象全部改成小写形式。
在这两个函数中你使用的形参类型相同吗?为什么?
答:
判断是否包含大写的不用修改实参的值,所以为const string 的引用
全部改成小写形式的需要修改实参的值,所以为 普通的string 引用。
#include <iostream>
#include <string>
#include <cctype>
using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::getline;
//判断是否包含大写字母
bool is_upper(const string &s)
{
for (auto a : s)
{
if (isupper(a))
return true;
}
return false;
}
//把string对象全部必成小写形式
void to_lower(string &s1)
{
for (auto &a : s1)
{
a=tolower(a);
}
}
int main()
{
string str,tmpstr;
cout << "请输入字符串:";
getline(cin, str);
tmpstr = str;
if (is_upper(str))
cout << str << "包含大写字母" << endl;
else
cout << str << "不包含大写字母" << endl;
to_lower(str);
cout << tmpstr << "全部改为小写字母为:" << str<< endl;
return 0;
}
执行结果: