检查两个常量是否为空



我对C++场景有点陌生,所以我想知道如何验证两个字段都输入了一些文本,这是当前代码,它只验证一个字段

void App::requestLogin(const QString &email, const QString &password) {
    if (m_active)
        return;
    //how can I do both password and email here????
    const QStringList list = email.split(QRegExp("\s+"), QString::SkipEmptyParts);
    if (list.isEmpty()) {
        m_errorMessage = "please complete both fields";
        m_error = true;
        emit statusChanged();
        return;
    }
}

很难理解你的意思,但这是我根据你的错误消息的疯狂猜测。您甚至不需要为此使用正则表达式。即使你需要,你也应该使用QRegularExpression,而不是慢得多的QRegExp。

void App::requestLogin(const QString &email, const QString &password) {
    if (m_active)
        return;
    ...
    if (email.isEmpty() || password.isEmpty()) {
        m_errorMessage = "please complete both fields";
        m_error = true;
        emit statusChanged();
        return;
    }
}

此操作也比您在评论中写的&&更合乎逻辑,因为通常您需要同时提供电子邮件密码。基本上,如果其中任何一个满足,条件就会满足。这意味着如果任何输入字段保持为空,您将引发错误,这似乎是一种合理的行为。

大致如下:

if (list.isEmpty() && password.isEmpty())

我不确定您为什么要"拆分"电子邮件。如果它只是一个用于登录目的的电子邮件地址,您应该能够执行email.isEmpty()而不是使用正则表达式拆分。