C++ 程序定义小用户名的异常并验证用户名

c++server side programmingprogramming

假设我们有一个用户名字符串,我们必须根据一些条件检查用户名是否有效。因此,我们必须定义一个异常,当用户名长度小于 5 个字符时抛出。对于有效的用户名,我们必须返回"Valid",对于无效的用户名,我们必须返回"Invalid",对于较小的用户名,我们必须抛出异常。有效的用户名条件是 −

  • 用户名必须为五个字符长

  • 不应有两个连续的"w"在用户名中

因此,如果输入类似 unames = ["amit", "to", "paul_tim", "greg_harry", "towwer"],则输出将是 [Too short: 4, Too short: 2, Valid, Valid, Invalid],因为前两个太小,最后一个有两个连续的"w"。其他都很好。

为了解决这个问题,我们将遵循以下步骤 −

  • 定义一个名为 BadLengthExcaption 的异常

  • 它将返回消息长度

  • 定义一个函数 validation(),这将采用 u_name,

  • isValid := true

  • n := u_name 的大小

  • 如果 n < 5,则:

    • 抛出 BadLengthException(n)

  • 初始化 i := 0,当 i < n-1,更新(将 i 增加 1),执行以下操作:

    • 如果 u_name[i] 与 'w' 相同,且 u_name[i + 1] 与 'w' 相同,则:

      • isValid := false

  • 返回 isValid

  • 从主方法执行以下操作:

  • 对于 unames 中的所有用户名 u_name,执行以下操作

    • validate(u_name)

    • 如果有效,则打印 VALID

    • 否则,如果无效,则打印 INVALID

    • 否则,如果长度较小,则打印 Too Small

示例

让我们看看下面的实现以便更好地理解 −

#include <iostream>
#include <vector>
#include <exception>
using namespace std;
class BadLengthException{
    public:
    int x;
    BadLengthException(int n) {
        x=n;
    }
    int what() const throw(){return x;}
};
bool validation(string u_name) {
    bool isValid = true;
    int n = u_name.length();
    if(n < 5) {
        throw BadLengthException(n);
    }
    for(int i = 0; i < n-1; i++) {
        if(u_name[i] == 'w' && u_name[i+1] == 'w') {
            isValid = false;
        }
    }
    return isValid;
}
int main() {
    vector<string> unames = {"amit", "to", "paul_tim", "greg_harry", "towwer"};
    for(int i = 0; i < unames.size(); i++){
        string u_name = unames[i];
        try {
            bool isValid = validation(u_name);
            if(isValid) {
                cout << "Valid" << '\n';
            } else {
                cout << "Invalid" << '\n';
            }
        } catch (BadLengthException e) {
            cout << "Too short: " << e.what() << '\n';
        }
    }
}

输入

{"amit", "to", "paul_tim", "greg_harry", "towwer"}

输出

Too short: 4
Too short: 2
Valid
Valid
Invalid

相关文章