txt当数据库未免也太。。。
你可以用mysql、access、sqlite之类的也行啊,实在嫌麻烦想用文本文档来存储的话那就用配置文件吧
创建user.ini
[password]
1=111
2=222
.......
判断重复:
QSettings setini("user.ini",QSettings::IniFormat);
if(setini.contains("password/4"))
{
if(你输入的密码==setini.value("password/4"))
登录成功;
else
密码错误!;
}
我现在已经到将QStringList写入txt的步骤了但是写入出错了。
注册窗口程序如下:
#include "form.h"
#include "ui_form.h"
#include "widget.h"
#include <QString>
#include <QFile>
#include <QStringList>
//#include <QChar>
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
}
using namespace std;
struct user
{
QString ID;
QString name;
QString password;
};
void Form::on_btn_reg_login_clicked()
{
QString reg_name=ui->line_reg_name->text();
QString reg_passwd=ui->line_reg_passwd->text();
QString str="1|today|today";
QStringList myList=str.split("|");
if(reg_name.isEmpty())
{
qDebug()<<"Please set your user name"<<endl;
}
if(reg_passwd.isEmpty())
{
qDebug()<<"Please set your password"<<endl;
}
QFile file("D:/QTstudy/untitled/test.txt");
if(!file.open(QIODevice::ReadWrite))
{
qDebug()<<"system error!"<<endl;
}
while(!file.atEnd())
{
QString qstr=file.readLine();
qstr=qstr.trimmed();
if(reg_name==qstr)
{
qDebug()<<"The user name is already taken"<<endl;
}
else {
user u;
u.ID=str.lastIndexOf(("|")+1);
u.name= reg_name;
u.password = reg_passwd;
myList=u.ID,u.name,u.password;
QTextStream out(&file);
out<<QStringList(myList)<<endl;
file.close();
}
}
}
void Form::on_btn_reg_quit_clicked()
{
}
Form::~Form()
{
delete ui;
}
出错如下:
D:\QTstudy\untitled\form.cpp:67: error: no match for 'operator<<' (operand types are 'QTextStream' and 'QStringList')
out<<QStringList(myList)<<endl;
^
还有一个报错是这样的:
D:\QTstudy\untitled\form.cpp:67: error: no match for 'operator<<' (operand types are 'QTextStream' and 'QStringList')
out<<QStringList(myList)<<endl;
^
上面的发错了,第二个报错是这样的:
D:\QTstudy\untitled\form.cpp:65: error: no match for 'operator=' (operand types are 'QStringList' and 'QString')
myList=u.ID,u.name,u.password;
^
我也不是很懂C++这一块。但是报错都是没有运算符,我想你这个out是指cout还是啥?QStringList的赋值方法是否正确?