C++ 程序定义小用户名的异常并验证用户名
假设我们有一个用户名字符串,我们必须根据一些条件检查用户名是否有效。因此,我们必须定义一个异常,当用户名长度小于 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