C++-Primer-Plus 习题解答(第十六章-string类和标准模板库)

文章介绍了C++中的字符串操作,包括回文检测函数、处理大小写、空格和标点、使用getline()读取输入、tolower()转换字符以及容器如vector和set的使用。还涉及类模板、迭代器和随机打乱元素等技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:16.1

回文指的是顺读和逆读都一样的字符串。例如,“tot”和“otto”都 是简短的回文。编写一个程序,让用户输入字符串,并将字符串引用传 递给一个bool函数。如果字符串是回文,该函数将返回true,否则返回 false。此时,不要担心诸如大小写、空格和标点符号这些复杂的问题。 即这个简单的版本将拒绝“Otto”和“Madam,I'm Adam”。请查看附录F中 的字符串方法列表,以简化这项任务。

bool Func(string ch)
{
	int size = ch.size();
	string::iterator first = ch.begin();
	string::iterator second = ch.end();//这是在最末尾后面了
	second--;
	for (int i = 0; i < size / 2; i++)
	{
		cout << "first=" << *first << endl;
		cout << "second=" << *second << endl;
		if (*first != *second)
		{
			return false;
		}
		first++;
		second--;
	}
	return true;
}

 问题1:string是类模板吗?

string是C++标准库中的一个类模板。在C++中,string类模板用于表示字符串,提供了一系列操作字符串的方法。通过使用string类模板,可以方便地操作字符串,而不需要手动管理内存或处理字符串的长度等问题。因此,string类模板是C++中非常常用的类之一。

题目:16.2 

题: 与编程练习1中给出的问题相同,但要考虑诸如大小写、空格和 标点符号这样的复杂问题。即“Madam,I'm Adam”将作为回文来测试。 例如,测试函数可能会将字符串缩略为“madamimadam”,然后测试倒过 来是否一样。不要忘了有用的cctype库,您可能从中找到几个有用的 STL函数,尽管不一定非要使用它们。

bool Func1(string ch)
{
    int size = ch.size();
    string::iterator first = ch.begin();
    string::iterator second = ch.end();//这是在最末尾后面了
    second--;
    for (int i = 0; i < size / 2; i++)
    {
        cout << "first=" << *first << endl;
        cout << "second=" << *second << endl;
        if (*first != *second)
        {
            return false;
        }
        first++;
        second--;
    }
    return true;
}
bool Func2(string ch)
{
    //需求:判断有符号的一串数字是否是回文数,且要将其全部转为小写字母
    string::iterator it = ch.begin();
    for (; it != ch.end(); )
    {
        if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值