Bool函数总是返回false

时间:2015-07-22 02:09:59

标签: c++ function boolean

您好我试图创建一个功能,让用户知道输入的单词是否是回文(向后拼写相同,例如:皮划艇)。这是我提出的功能,但由于某种原因,该函数总是返回false。

#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);
}

3 个答案:

答案 0 :(得分:2)

您实际上并没有进行任何字符比较,只是比较索引firstlast - 它们不匹配,因此您返回false。

答案 1 :(得分:1)

按照以下代码,如果我们假设 public interface Advapi32 extends Library { Advapi32 INSTANCE = (Advapi32)Native.loadLibrary("advapi32", Advapi32.class); boolean GetUserNameA(byte[] name, IntByReference intRef); } 大于0,则lastwhile(first < last),后跟trueif(first == last),因此函数返回false。我猜你可能想要比较字符而不是索引。

false

答案 2 :(得分:0)

if(first == last){} 这是错误。