题目: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