首页 > 解决方案 > 无法使用 isdigit() 检测字符串中的数字

问题描述

该函数的任务是检查它是否包含除数字、空格或减号之外的任何符号。

bool MainWindow::inputExcp()
    {
        QString inputStr = ui->input->toPlainText();;
        QByteArray ba = inputStr.toLocal8Bit();
        char *myString = ba.data();
        QString warn;
        char space = ' ';
        size_t size = sizeof(myString);
        try{
            for(unsigned long long i = 0; i < size; i++)
            {
                if (isdigit(*(myString+i)))
                    continue;
                else if (*(myString+i) == space)
                    continue;
                else if(*(myString+i) == '-')
                    continue;
                else
                    throw *(myString+i);
            }
        }
        catch (char x)
        {
            warn += ("Enter digits, spaces or minuses");
            QMessageBox::warning(this, "Uncorrect input",warn);
            return false;
        }
        return true;
    }

我不明白为什么这个函数只对包含 8 个或更多元素的数组返回 true。这个问题的解决方案是什么?

标签: c++qt

解决方案


因为 sizeof() 函数不返回列表元素的数量,它返回为其分配的内存大小。


推荐阅读