尝试使用 C++ 从列表中打印无效的电子邮件地址?

Trying to print invalid email address from a list using c++?

我正在尝试从电子邮件地址列表中打印无效电子邮件地址列表(其中包含 space 而没有 @ 或 .)。该列表中有一些电子邮件地址有 space,没有“@”或“.”。但它仍然不打印任何东西。

    //Declaring boolean variables
    bool atPresent;
    bool periodPresent;
    bool spacePresent;
    
    string emailid = someemailfrom a list;
    atPresent = false;
    periodPresent = false;
    spacePresent = false;
    
    //looking for @
    size_t foundAt = emailid.find('@');
    if (foundAt != string::npos) {
        atPresent = true;
    }
    
    //looking for '.'
    size_t foundPeriod = emailid.find('.');
    if (foundPeriod != string::npos) {
        periodPresent = true;
    }
    
    //looking for ' '
    size_t foundSpace = emailid.find(' ');
    if (foundSpace != string::npos) {
        spacePresent = true;
    }
    
    //checking to see if all conditions match
    if ( (atPresent == false) && (periodPresent == false) && (spacePresent == true)) {
        cout << emailid << endl;
    }
(atPresent == false) && (periodPresent == false) && (spacePresent == true)

错了。仅当满足无效地址的三个条件中的 所有 时才为真。但是只要满足 至少 条件,地址就无效。这将是

(atPresent == false) || (periodPresent == false) || (spacePresent == true)

并简化:

!atPresent || !periodPresent || spacePresent

将 && 语句替换为 ||语句:您只打印那些没有@并且有 space 并且有句点的语句。你应该使用正则表达式,这样你就可以在一行上完成,并且知道如何使用它们在你尝试验证用户数据时总是有用的