C++ 布尔函数总是返回false
嗨,我正在尝试创建一个函数,让用户知道输入的单词是否是回文,拼写是否相同,例如:kayak。这是我提出的函数,但由于某些原因,函数总是返回falseC++ 布尔函数总是返回false,c++,function,boolean,C++,Function,Boolean,嗨,我正在尝试创建一个函数,让用户知道输入的单词是否是回文,拼写是否相同,例如:kayak。这是我提出的函数,但由于某些原因,函数总是返回false #include <iostream> #include <cctype> using namespace std; bool compare(string str2) { int first = 0, mid, last = (str2.size() - 1); while(first < las
#include <iostream>
#include <cctype>
using namespace std;
bool compare(string str2)
{
int first = 0, mid, last = (str2.size() - 1);
while(first < last)
{
if(first == last)
{
first++;
last--;
}
else return(false);
}
return(true);
}
int main()
{
string pal;
cout <<"Enter your single word palindrome: ";
getline(cin,pal);
if(compare(pal) == true)cout << pal <<" is a palindrome.\n";
else cout << pal <<" is not a palindrome.\n";
return(0);
}
实际上,您没有进行任何字符比较,只是比较了索引的第一个和最后一个-它们不匹配,因此返回false。如果first==last{}
这就是错误所在 在下面的代码之后,如果我们假设last大于0,则first
int first = 0, mid, last = (str2.size() - 1);
while(first < last)
{
if(first == last)
{
first++;
last--;
}
else return(false);
}
在代码中,您应该比较char而不是int。因此请尝试以下方法:
bool compare(string str2)
{
int first = 0, mid, last = (str2.size() - 1);
while(first] < last)
{
if(str2[first] == str2[last])
{
first++;
last--;
}
else
return(false);
}
return(true);
}
如果first==last->first和last是索引数字,您需要比较while循环中的字符,您的if是错误的。您需要str2[first]==str2[last],因为您正在检查两个first都小于last,并且first与last相同,这两个值不能都为true。您的意思是str2[first]==str2[last]?