如何检查一个字符串是否与数组中的另一个字符串不相等
How to check if a string does not equal another string in an array?
在代码的第一部分中,它检查用户输入的用户名和密码是否匹配,如果匹配,则登录客户端。这部分代码没问题。
首码:
//If the user entered a username & pass that matches a stored user & pass
if (incomingClients[i].username == existingClients[e].username) {
if (incomingClients[i].password == existingClients[e].password) {
//LogInClient();
}
}
在第二部分中,它应该检查用户是否输入了不存在的用户名,如果不存在,那么我们告诉用户他/她输入了不存在的用户名。
第二代码://If the user entered a username that DOES NOT match a stored user
if (incomingClients[i].username != existingClients[e].username) {
//NotifyClientUserDoesntExist();
}
我在这里遇到的问题是第二个代码总是为真。为什么会这样?
如果我输入一个存在的用户名,第一个代码执行,第二个代码也执行。我只希望第二个代码执行,如果传入。Username不等于exists . Username .
提前感谢。
因为你的check可能在for循环中,比如
for (int e = 0; e < existingClients.size(); ++e) {
if (incomingClients[i].username == existingClients[e].username)
if (...) {
}
if (incomingClients[i].username != existingClients[e].username) {
..
}
}
但是逻辑是不正确的,因为一旦发现一个现有客户端具有不同的用户名,您就会考虑不存在的用户。代码应该像这样:
const auto& user = find_if(begin(existingClients), end(existingClients), [](const User& user) { return user.username == existingClients[i].username; }
bool isExistingLogin = user != existingClients.end();
bool isCorrectLogin = isExistingLogin && user->password == incomingUsers[i].password;
如果existingClients
有正确的用户名,则存在登录,如果存在且密码匹配,则登录是正确的。
为什么不这样做呢?
if (incomingClients[i].username == existingClients[e].username) {
if (incomingClients[i].password == existingClients[e].password) {
//LogInClient();
}
}
else {
//NotifyClientUserDoesntExist();
}
相关文章:
- 将C#字符串数组传递给C++
- 如何为 C 型字符串数组编写 getter 和 setter?
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 尝试将 c 字符串数组与分隔符连接起来
- 将字符串数组传递给接受常量字符**的函数
- 返回 C++ 中的字符串数组
- 如何从COM模块中的函数返回字符串数组?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 删除字符串数组
- 如何将字符串数组返回到 java JNI
- 将字符串数组作为函数参数传递
- C++将字符串数组的元素存储到变量中
- 循环访问还包含未使用元素的字符串数组
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 乘以字符串/数组和全局数组
- 递归二进制搜索与字符串数组
- 如何初始化一个标准::字符串数组?
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- C++字符串数组的动态向量
- 给定一个等长字符串数组