QT做登录验证,密码验证过不了,求助!

xingchen520 2016-02-24 09:45:01
文本文件保存帐号和密码(格式:帐号-密码)如下:
11111111-111111
1111111-111111
xingc01-111111
xingc02-111111

帐号匹配正确,密码不对;
传入参数:(xingc01,111111),
(QL_info.at(1) == strPwd)条件不成立。


bool MyWin::login(const QString &strName, const QString &strPwd)
{
if (ui.lineEdit_1->text().isEmpty() || ui.lineEdit_2->text().isEmpty())
{
return false;
}

QFile info("D:\\user.txt");

if (!info.open(QIODevice::ReadOnly))
{
Message * message = new Message;
message->info("Connect fail!");
message->show();
return false;
}

QString Q_info = {};
QStringList QL_info;

while (!info.atEnd())
{
Q_info = info.readLine();
QL_info = Q_info.split("-", QString::SkipEmptyParts);
//此处if第二个条件,提示密码不匹配
if ( (QL_info.at(0) == strName) && (QL_info.at(1) == strPwd) )
{
info.close();
return true;
}
}

info.close();
return false;
}
...全文
881 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RHuniSoft 2016-02-25
  • 打赏
  • 举报
回复
两个变量打印出来看看,或者用qs1.compare(qs2) == 0试试,再或者是不是字符编码格式的问题
xingchen520 2016-02-25
  • 打赏
  • 举报
回复
修改了下代码过了-。-,存帐号密码格式改成了(帐号+空格+密码)。
bool MyWin::login(const QString &strName, const QString &strPwd)
{
	//输入信息为空时,登录失败
	if (strName.isEmpty() || strPwd.isEmpty())
	{
		return false;
	}

	QFile info("D:\\user.txt");

	if (!info.open(QIODevice::ReadOnly))
	{
		Message * message = new Message;
		message->info("Connect fail!");
		message->show();
		return false;
	}

	QString name, password;

	while (!info.atEnd())
	{
		QTextStream line(info.readLine());
		line >> name >> password;
		if ((name == strName) && (password == strPwd))
		{
			return true;
		}
	}

	return false;
}
xingchen520 2016-02-25
  • 打赏
  • 举报
回复
引用 2 楼 ljh56789 的回复:
两个变量打印出来看看,或者用qs1.compare(qs2) == 0试试,再或者是不是字符编码格式的问题

		if ( (QL_info.at(0) == strName) /*&& (QL_info.at(1) == strPwd)*/ )
		{
			
			Message * message = new Message;
			message->info(QL_info.at(1));                  //这里打印出来的内容和预期的密码一样,但是内容明明一样,为什么不能用==,会不会和const或者size有关?
			message->show();

			return true;
		}
赵4老师 2016-02-25
  • 打赏
  • 举报
回复
先确认字符串比较可以用==
xingchen520 2016-02-25
  • 打赏
  • 举报
回复
引用 1 楼 zxh707wk 的回复:
看你输入的和读取的分别是什么,然后再修改代码
输入 帐号:xingc01 密码:111111 密码验证条件去掉就能过,但是密码验证加上去就验证失败
        Q_info = info.readLine();
        QL_info = Q_info.split("-", QString::SkipEmptyParts);
                //此处if第二个条件,提示密码不匹配
        if ( (QL_info.at(0) == strName) && (QL_info.at(1) == strPwd) )
        {
            info.close();
            return true;
        }
这里strPwd是111111,不知道QL_info.at(1)的内容是多少,期望的是111111
707wk 2016-02-24
  • 打赏
  • 举报
回复
看你输入的和读取的分别是什么,然后再修改代码

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧