我正在为一个作业开发一个项目,我需要一些QFile和QTextStream的帮助。我想最初创建一个文件(名为:users.txt),里面有这个:
ID Password Name and Surname Username
1 | cheese | Daniel Markov | MaDanjel
2 | something | Mika Firring | Marila
..
..
到目前为止,我收到了skrivno.txt
的以下内容:
0202|Nejc Zun|nejczun|
这是代码:
void registracija::write() {
QFile username("skrivno.txt");
if(!username.open(QIODevice::Append))
QMessageBox::information(0,"Error",username.errorString());
QTextStream u1(&username);
username.open(QIODevice::Append | QFile::Text);
u1 << ui->lineEdit_3->text()+"|"; //code
u1 << ui->lineEdit_4->text()+"|"; //name and surname
u1 << ui->lineEdit_5->text()+'\n'; //password
username.close();
}
我的计划是从这个函数调用文本:
void MainWindow::on_pushButton_3_clicked()//login
{
QFile username("skrivno.txt");
if(!username.open(QIODevice::ReadOnly))
QMessageBox::information(0,"Error",username.errorString());
QTextStream u1(&username);
username.open(QIODevice::ReadOnly | QFile::Text);
QString temp;
while (!u1.atEnd()) {
temp = u1.readLine();
if((ui->lineEdit_2->text()== temp.section("|",0,0)) && (ui->lineEdit->text()== temp.section("|",2,2))){
ui->label_2->setText("Welcome: " + temp.section("|",1,1));
ui->progressBar->show();
for(int a=0;a<101;a++){
ui->progressBar->setValue(a);
}
Open_Window();
ui->progressBar->close();
ui->un1->close();
ui->un2->close();
ui->label_3->close();
player->stop();
}else{
ui->label->close();
ui->un1->show();
ui->un2->show();
ui->label_3->show();
player->stop();
}
}
username.close();
}
并且它可以从不同的用户读取,因此它会检查用户的用户名和密码,如果用户使用正确的密码,则让他打开下面的内容。
这是仅测试文件skrivno.txt
的第一行的代码if((ui->lineEdit_2->text()== temp.section("|",0,0)) && (ui->lineEdit->text()== temp.section("|",2,2)))
现在我需要帮助,这样不仅可以在文本中写入ID,还可以检查所有用户及其密码是否正确,而不仅仅是文件中的第一个。
我的代码有效。我需要帮助改进代码:
这样的事情:
void registracija::write() {
QFile username("skrivno.txt");
if(!username.open(QIODevice::Append))
QMessageBox::information(0,"Error",username.errorString());
QTextStream u1(&username);
username.open(QIODevice::Append | QFile::Text);
u1 << SOMEHOW ADD THE ID IN HERE AND ALWAYS ADD IT +1 // <= help needed
u1 << ui->lineEdit_3->text()+"|"; //code
u1 << ui->lineEdit_4->text()+"|"; //name and surname
u1 << ui->lineEdit_5->text()+'\n'; //password
username.close();
}