先在工程项目的文件里面创建一个新文件夹css,用来保存.css文件
创建css文件
7.在mian.cpp中写如下代码设置打开窗口时,运行程序时是logindialog窗口先打开
#include "mainwindow.h"
#include <QApplication>
#include "logindialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
loginDialog login; //定义一个对话框窗口
int ret = login.exec();
if(QDialog::Accepted == ret){
MainWindow w;
w.show();
return a.exec();
}
return ret;
}
/*设置标题"账号登录"样式*/
QLabel#titleLabel{
color:#12bb37; /*字体颜色*/
font-size: 20px; /*字体大小*/
font-family:Helvetica; /*字体集*/
}
/*设置登录按钮样式*/
QPushButton#loginButton{
background:#12bb37; /*按钮颜色*/
color:white; /*字体颜色*/
border-radius:5px;/*按钮设置圆角*/
border:none; /*去掉按钮边框*/
min-height:40px; /*设置按钮最小高度*/
font-size:18px;/*设置字体大小*/
font-family:Helvetica;/*字体集*/
}
/*设置单行编辑框样式*/
QLineEdit {
color: #bfbfbf; /*设置输入文本的颜色 */
border-radius: 5px;/*按钮单行编辑框圆角*/
min-height: 40px; /*设置单行编辑框最小高度*/
border: 1px solid #eeeeee; /*设置单行编辑框边框大小为1px 无空隙 颜色为#eeeeee*/
font-size: 14px; /*设置输入的字体大小*/
font-family:Helvetica;/*字体集*/
}
/*设置单行编辑框焦点时样式*/
QLineEdit:focus {
color: black; /* 设置输入文本获取焦点后的颜色 */
outline: none;
border:none;
border-width:0;
/* border-style:outset;*/
border: 1px solid #12bb37;
}
2.在logon.cpp文件中加载login.css样式表,初始化QLineEdit,并重写paintEvent函数绘制窗口圆角
//logindialog.h
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include <QDialog>
namespace Ui {
class loginDialog;
}
class loginDialog : public QDialog
{
Q_OBJECT
public:
explicit loginDialog(QWidget *parent = nullptr);
~loginDialog();
void initEdit();
protected:
void paintEvent(QPaintEvent *event) override;
private:
Ui::loginDialog *ui;
};
#endif // LOGINDIALOG_H
//logindialog.cpp
#include "logindialog.h"
#include "ui_logindialog.h"
#include <QFile>
#include <QPainter>
loginDialog::loginDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::loginDialog)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint); //设置窗口无边框
setFixedSize(350,390); //固定登录对话框的窗口大小
//加载css样式表
QString qss;
QFile file(":/css/login.css");
if (file.open(QFile::ReadOnly)) {
qss = QLatin1String(file.readAll());
qApp->setStyleSheet(qss);
file.close();
}
ui->usernameEdit->setAttribute(Qt::WA_MacShowFocusRect, 0); //去掉默认选中usernameEdit就会出现的蓝色边框
ui->passwordEdit->setAttribute(Qt::WA_MacShowFocusRect, 0); //去掉默认选中passwordEdit就会出现的蓝色边框
ui->passwordEdit->setEchoMode(QLineEdit::Password); //设置密码输入显示为圆点(并不是加密)
setAttribute(Qt::WA_TranslucentBackground); //设置窗口背景为透明,然后重绘窗口
initEdit(); //初始化lineEdit
}
loginDialog::~loginDialog()
{
delete ui;
}
//初始化lineEdit
void loginDialog::initEdit(){
ui->usernameEdit->setPlaceholderText(" 请输入用户名"); //设置占位符文本提示用户输入用户名
ui->usernameEdit->setFocusPolicy(Qt::ClickFocus); // 点击获得焦点
ui->passwordEdit->setPlaceholderText(" 请输入密码"); //设置占位符文本,提示用户输入密码
ui->passwordEdit->setFocusPolicy(Qt::ClickFocus); // 点击获得焦点
}
//重写绘画事件-重绘窗口并设置窗口圆角
void loginDialog::paintEvent(QPaintEvent *event){
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true); //抗锯齿
painter.setBrush(QColor(Qt::white));// 设置画刷颜色
painter.setPen(QColor(Qt::white)); //设置画笔颜色
painter.drawRoundedRect(rect(),12,12); //画圆角矩形
}
void loginDialog::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
isDragging = true; //用于表示是否要拖动对话框窗口的标志位
lastMousePos = event->globalPos() - pos(); //获取鼠标在对话框中的偏移量
//event->globalPos()//鼠标在整个屏幕的全局坐标
//pos(); 对话框当前位置的坐标
event->accept(); //event->accept() 是Qt框架中的一个方法,用于标记事件已经被处理。
}
}
void loginDialog::mouseMoveEvent(QMouseEvent *event)
{
if (isDragging && (event->buttons() & Qt::LeftButton)) { //(event->buttons() & Qt::LeftButton)使用按位与来判断鼠标左键是否按下
move(event->globalPos() - lastMousePos); //鼠标全局坐标减去偏移量位置,就可以得出对话框在屏幕中的坐标
event->accept();
}
}
void loginDialog::mouseReleaseEvent(QMouseEvent *event)
{
//鼠标释放标志位就设置为false
if (event->button() == Qt::LeftButton) {
isDragging = false;
event->accept();
}
}
定义一个QPixmap类型的私有成员变量用来展现图片,定义一个信号用来发送点击信号,重写点击鼠标事件用来发送点击信号和绘画事件用来展示图片
//closebutton.h
#ifndef CLOSEBUTTON_H
#define CLOSEBUTTON_H
#include <QWidget>
class closeButton : public QWidget
{
Q_OBJECT
public:
explicit closeButton(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
signals:
void clicked();
private:
QPixmap m_pixmap;
};
#endif // CLOSEBUTTON_H
//closebutton.cpp
#include "closebutton.h"
#include <QPainter>
closeButton::closeButton(QWidget *parent)
: QWidget{parent}
{
m_pixmap.load(":/image/close.png"); //加载图片
update(); //触发重绘窗口事件
}
void closeButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter pen(this);
pen.drawPixmap(rect(),m_pixmap); //将图片绘制在当前窗口部件的矩形区域内
}
void closeButton::mousePressEvent(QMouseEvent *event)
{
Q_UNUSED(event);
emit clicked();
}
public slots:
void closeWindow();
void loginDialog::closeWindow()
{
this->close();
}
connect(ui->closeWidget,&closeButton::clicked,this,&loginDialog::closeWindow); //点击自定义的关闭按钮,关闭窗口
//registerbutton.h
#ifndef REGISTERBUTTON_H
#define REGISTERBUTTON_H
#include <QWidget>
class registerButton : public QWidget
{
Q_OBJECT
public:
explicit registerButton(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
signals:
void clicked();
private:
QString registerText;
};
#endif // REGISTERBUTTON_H
//registerbutton.cpp
#include "registerbutton.h"
#include <QPainter>
registerButton::registerButton(QWidget *parent)
: QWidget{parent}
{
registerText = "注册帐户";
}
void registerButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter pen(this);
QFont font;
font.setPointSize(12); //设置字体大小12px
font.setUnderline(true); //设置下划线
pen.setPen(QColor("#12bb37"));//设置字体颜色
pen.setFont(font);//将设置好的字体应用到 pen 上
pen.drawText(rect(),Qt::AlignCenter,registerText);//在按钮的矩形区域内居中绘制文本 //Qt::AlignCenter 指定了文本的对齐方式居中对齐,registerText 是要绘制的文本内容
}
void registerButton::mousePressEvent(QMouseEvent *event)
{
Q_UNUSED(event);
emit clicked();
}
/*register.css*/
/*设置标题"注册账号"样式*/
QLabel#titleLabel{
color:black; /*字体颜色*/
font-size: 22px; /*字体大小*/
font-family:Helvetica; /*字体集*/
}
/*设置注册按钮样式*/
QPushButton#registerBtn{
background:#12bb37; /*按钮颜色*/
color:white; /*字体颜色*/
border-radius:5px;/*按钮设置圆角*/
border:none; /*去掉按钮边框*/
min-height:40px; /*设置按钮最小高度*/
font-size:18px;/*设置字体大小*/
font-family:Helvetica;/*字体集*/
}
/*设置单行编辑框样式*/
QLineEdit {
color: #bfbfbf; /*设置输入文本的颜色 */
border-radius: 5px;/*按钮单行编辑框圆角*/
min-height: 40px; /*设置单行编辑框最小高度*/
border: 1px solid #eeeeee; /*设置单行编辑框边框大小为1px 无空隙 颜色为#eeeeee*/
font-size: 14px; /*设置输入的字体大小*/
font-family:Helvetica;/*字体集*/
}
/*设置单行编辑框焦点时样式*/
QLineEdit:focus {
color: black; /* 设置输入文本获取焦点后的颜色 */
outline: none;
border:none;
border-width:0;
border: 1px solid #12bb37;
}
//registerdialog.h
#ifndef REGISTERDIALOG_H
#define REGISTERDIALOG_H
#include <QDialog>
namespace Ui {
class registerDialog;
}
class registerDialog : public QDialog
{
Q_OBJECT
public:
explicit registerDialog(QWidget *parent = nullptr);
~registerDialog();
void initEdit();
protected:
void paintEvent(QPaintEvent *event) override;
private:
Ui::registerDialog *ui;
};
#endif // REGISTERDIALOG_H
//registerdialog.cpp
#include "registerdialog.h"
#include "ui_registerdialog.h"
#include <QFile>
#include <QPainter>
registerDialog::registerDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::registerDialog)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint); //设置窗口无边框
setFixedSize(350,390); //固定登录对话框的窗口大小
//加载css样式表
QString qss;
QFile file(":/css/register.css");
if (file.open(QFile::ReadOnly)) {
qss = QLatin1String(file.readAll());
qApp->setStyleSheet(qss);
file.close();
}
ui->usernameEdit->setAttribute(Qt::WA_MacShowFocusRect, 0); //去掉默认选中usernameEdit就会出现的蓝色边框
ui->passwordEdit->setAttribute(Qt::WA_MacShowFocusRect, 0); //去掉默认选中passwordEdit就会出现的蓝色边框
ui->passwordEdit->setEchoMode(QLineEdit::Password); //设置密码输入显示为圆点(并不是加密)
setAttribute(Qt::WA_TranslucentBackground); //设置窗口背景为透明,然后重绘窗口
initEdit(); //初始化lineEdit
}
registerDialog::~registerDialog()
{
delete ui;
}
void registerDialog::initEdit()
{
ui->usernameEdit->setPlaceholderText(" 请输入用户名"); //设置占位符文本提示用户输入用户名
ui->usernameEdit->setFocusPolicy(Qt::ClickFocus); // 点击获得焦点
ui->passwordEdit->setPlaceholderText(" 请输入密码"); //设置占位符文本,提示用户输入密码
ui->passwordEdit->setFocusPolicy(Qt::ClickFocus); // 点击获得焦点
}
void registerDialog::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing,true); //抗锯齿
painter.setBrush(QColor(Qt::white));// 设置画刷颜色
painter.setPen(QColor(Qt::white)); //设置画笔颜色
painter.drawRoundedRect(rect(),12,12); //画圆角矩形
}
//logindialog.h
public slots:
void openRegisterDialog();
//logindialog.cpp
void loginDialog::openRegisterDialog()
{
registerDialog *registerWindow = new registerDialog;
close(); //关闭当前登录窗口
registerWindow->exec(); //以模态的方式打开注册窗口
}
connect(ui->registerWidget,®isterButton::clicked,this,&loginDialog::openRegisterDialog); //点击注册账户按钮,跳转到注册账户窗口
//registerdialog.h
public slots:
void closeWindow();
//registerdialog.cpp
void registerDialog::closeWindow()
{
this->close();
}
connect(ui->closeWidget, &closeButton::clicked, this, ®isterDialog::closeWindow); //点击关闭按钮关闭注册窗口
//loginbutton.h
#ifndef LOGINBUTTON_H
#define LOGINBUTTON_H
#include <QWidget>
class loginButton : public QWidget
{
Q_OBJECT
public:
explicit loginButton(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
signals:
void clicked();
private:
QString loginText;
};
#endif // LOGINBUTTON_H
//loginbutton.cpp
#include "loginbutton.h"
#include <QPainter>
loginButton::loginButton(QWidget *parent)
: QWidget{parent}
{
loginText = "登录账号";
}
void loginButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter pen(this);
QFont font;
font.setPointSize(12); //设置字体大小12px
font.setUnderline(true); //设置下划线
pen.setPen(QColor("#12bb37"));//设置字体颜色
pen.setFont(font);//将设置好的字体应用到 pen 上
pen.drawText(rect(), Qt::AlignCenter, loginText);//在按钮的矩形区域内居中绘制文本 //Qt::AlignCenter 指定了文本的对齐方式居中对齐,loginText 是要绘制的文本内容
}
void loginButton::mousePressEvent(QMouseEvent *event)
{
Q_UNUSED(event);
emit clicked();
}
1.在registerdialog.h中定义槽函数 openLoginWindow();,在registerdialog.cpp中实现槽函数openLoginWindow();,并连接信号与槽
//registerdialog.h
public slots:
void openLoginWindow();
void registerDialog::openLoginWindow()
{
loginDialog *secondWindow = new loginDialog;
close();
secondWindow->exec();
}
connect(ui->loginWidget,&loginButton::clicked,this,®isterDialog::openLoginWindow);//点击登录按钮打开登录窗口
// passwordbutton.h
#ifndef PASSWORDBUTTON_H
#define PASSWORDBUTTON_H
#include <QWidget>
class passwordButton : public QWidget
{
Q_OBJECT
public:
explicit passwordButton(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
signals:
void cliked();
private:
QString passwordText;
};
#endif // PASSWORDBUTTON_H
//passwordbutton.cpp
#include "passwordbutton.h"
#include <QPainter>
passwordButton::passwordButton(QWidget *parent)
: QWidget{parent}
{
passwordText = "忘记密码";
}
void passwordButton::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
Q_UNUSED(event);
QPainter painter(this);
QFont font;
font.setPointSize(14);
painter.setPen(QColor("#9b9b9b")); // 设置文本颜色为 #9b9b9b
painter.setFont(font);
painter.drawText(rect(), Qt::AlignCenter, passwordText);
}
void passwordButton::mousePressEvent(QMouseEvent *event)
{
Q_UNUSED(event);
emit cliked();
}
1.在logindialog.h中定义槽函数openPasswordDialog();,在logindialog.cpp中实现槽函数,并连接信号与槽
//logindialog.h
public slots:
void openPasswordDialog();
//logindialog.cpp
void loginDialog::openPasswordDialog()
{
this->close(); //关闭登录窗口
passwordDialog *passwordWindow = new passwordDialog;// 创建修改密码窗口对象
passwordWindow->exec(); // 显示修改密码窗口
}
connect(ui->passwordWidget,&passwordButton::cliked,this, &loginDialog::openPasswordDialog); //点击忘记密码按钮,跳转到修改密码窗口
实现效果如下:
//logindialog.h
public slots:
void login();
//logindialog.cpp
void loginDialog::login()
{
QSqlDatabase::removeDatabase("qt_sql_default_connection");
QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("localhost");//127.0.0.1
database.setPort(3306);
database.setUserName("root");
database.setPassword("rootPassword");
database.setDatabaseName("UAV"); //这个库是存在的
if (database.open()) {
qDebug() << "连接MySQL数据库成功";
} else {
qDebug() << "连接MySQL数据库失败";
}
QSqlQuery query(database);
QString username = ui->usernameEdit->text();
QString password = ui->passwordEdit->text();
query.prepare("SELECT * FROM user WHERE name = :username AND password = :password");
query.bindValue(":username", username);
query.bindValue(":password", password);
if (query.exec() && query.next()) {
this->accept();
qDebug() << "登录成功";
} else {
QMessageBox::information(this, "错误", "用户名或密码不对", QMessageBox::Ok);
}
}
connect(ui->loginBtn,&QPushButton::clicked,this,&loginDialog::login); //点击登录按钮,连接到数据库,判断用户输入的用户名和密码是否和数据库中的数据匹配
//registerdialog.h
public slots:
void registerBt();
//registerdialog.cpp
void registerDialog::registerBt()
{
QSqlDatabase::removeDatabase("qt_sql_default_connection");
QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("localhost");//127.0.0.1
database.setPort(3306);
database.setUserName("root");
database.setPassword("rootPassword");
database.setDatabaseName("UAV"); //这个库是存在的
if (database.open()) {
qDebug() << "连接MySQL数据库成功";
} else {
qDebug() << "连接MySQL数据库失败";
}
QSqlQuery query(database);
QString username = ui->usernameEdit->text();
QString password = ui->passwordEdit->text();
if(username == "" || password == ""){
qDebug() <<"输入为空";
QMessageBox::information(this, "错误", "输入为空", QMessageBox::Ok);
return;
}
query.prepare("SELECT name FROM user WHERE name = :username");
query.bindValue(":username", username);
if (query.exec() && query.next()) {
qDebug() << "用户名已存在,请选择其他用户名";
// 显示注册失败错误消息框
QMessageBox::information(this, "错误", "用户名已存在,请重新输入", QMessageBox::Ok);
return;
}
query.prepare("INSERT INTO user (name, password) VALUES (:username, :password)");
query.bindValue(":username", username);
query.bindValue(":password", password);
if (query.exec()) {
qDebug() << "用户注册成功";
QMessageBox::information(this, "欢迎", "注册账号成功,去登录", QMessageBox::Ok);
} else {
qDebug() << "用户注册失败" << query.lastError().text();
}
database.close();
}
connect(ui->registerBtn,&QPushButton::clicked,this,®isterDialog::registerBt); //点击注册按钮,连接数据库,如果用户名是首次输入就注册成功,否则失败
//passworddialog.h
public slots:
void password();
//passworddialog.cpp
void passwordDialog::password()
{
QSqlDatabase::removeDatabase("qt_sql_default_connection");
QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("localhost");//127.0.0.1
database.setPort(3306);
database.setUserName("root");
database.setPassword("rootPassword");
database.setDatabaseName("UAV"); //这个库是存在的
if (database.open()) {
qDebug() << "连接MySQL数据库成功";
} else {
qDebug() << "连接MySQL数据库失败";
}
QString username = ui->usernameEdit->text();
QString newPassword = ui->passwordEdit->text();
// 检查用户名是否存在
QSqlQuery checkQuery(database);
checkQuery.prepare("SELECT name FROM user WHERE name = :username");
checkQuery.bindValue(":username", username);
if (checkQuery.exec() && checkQuery.next()) {
// 更新用户密码
QSqlQuery updateQuery(database);
updateQuery.prepare("UPDATE user SET password = :newPassword WHERE name = :username");
updateQuery.bindValue(":newPassword", newPassword);
updateQuery.bindValue(":username", username);
if (updateQuery.exec()) {
qDebug() << "密码修改成功";
QMessageBox::information(this, "成功", "密码修改成功", QMessageBox::Ok);
} else {
qDebug() << "密码修改失败" << updateQuery.lastError().text();
QMessageBox::information(this, "错误", "密码修改失败,请重试", QMessageBox::Ok);
}
} else {
qDebug() << "用户名不存在";
QMessageBox::information(this, "错误", "用户名不存在,请重新输入", QMessageBox::Ok);
}
database.close();
}
connect(ui->passwordBtn,&QPushButton::clicked,this, &passwordDialog::password); //点击确认密码按钮,连接数据库,先判断用户名是否存在,存在就修改密码,不存在则修改失败
文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文
文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作 导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释: cwy_init/init_123..._达梦数据库导入导出
文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js
文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6
文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输
文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...
文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure
文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割
文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答
文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。
文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入
文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf