c++ - 我的句子回文代码(C++)有什么问题?

标签 c++ debugging error-handling palindrome sentence

以下代码是句子回文检查器。我是一名新手程序员,所以调试该代码很困难。显示错误的输出。
例如,如果句子是“一个人,一个计划,一条运河:巴拿马”
结果是假而不是真。 (空格和标点符号应忽略。)

#include <iostream>

class Solution
{
public:
    bool isPalindrome(std::string s)
    {
        int l, i;
        i = 0;
        l = s.length();

        while (i <= (l - 1))
        {

            if (s[i] == ' ' || ispunct(s[i]) == true)
                i++;

            else if (s[l - 1] == ' ' || ispunct(s[l - 1]) == true)
                l--;

            else if (tolower(s[i]) == tolower(s[l - 1]))
            {
                l--;
                i++;
            }

            else
                return false;
        }
        return true;
    }
};

int main(void)
{
    Solution s;
    const std::string text = "Panama";

    std::cout << s.isPalindrome(text);

    return 0;
}

最佳答案

问题很可能是character classification functions(例如ispunct)没有传回bool结果。
它们返回int,其值可以是“true”的任何非零值。
这意味着像ispunct(s[i]) == true这样的条件实际上可能是标点字符的false
您需要使用例如改为ispunct(s[i]) != 0(或只是简单的ispunct(s[i]))。

关于c++ - 我的句子回文代码(C++)有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63241576/

相关文章:

php - 如何正确设置PHP set_error_handler

c++ - Boost ASIO socket 读取 N 字节不多不少,等到它们到来或超时异常?

c++ - OpenCV/C++ - 经过一些图像处理后将灰度图片转换为 BGR 图片

java - 如何从 C++/Qt 调用 QtActivity 中的非静态 Java 方法

c++ - 如何通过Qt中的几个类对象发出信号?

macos - lldb 是否与 fortran 一起工作?

java - 无法创建我自己的自定义异常(exception)。请帮我

windows - WinDbg Dr. Watson minidump - 需要最初为安装版本构建的 pdb/dll?

arrays - bash $FUNCNAME 数组没有被清除

reactjs - 如何从react.js页面中的iframe中删除控制台错误