6.2 Const的用法

1.         Const的用法:

1)         定义const常量

2)         Const可以修饰函数的参数和返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

2.         Const#define相比有什么不同?

C++语言可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多的优点。

1)         Const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换中可能会产生意想不到的错误(边际效应)。

2)         有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。在c++程序中只适用const常量而不使用宏常量,即const常量完全取代宏常量。

这样看来我之前写程序的做法是非常非常不正规的,以后要注意用const类型来处理

### 使用 QT 6.2 进行 HTTP 文件上传 在开发基于 Qt 的应用程序时,可以利用 `QNetworkAccessManager` 类来处理网络请求。对于文件上传操作,通常会使用多部分表单数据 (multipart/form-data) 来发送文件和其他字段给服务器[^1]。 下面是一个简单的例子展示如何通过 POST 请求上传文件: ```cpp #include <QCoreApplication> #include <QFile> #include <QFileInfo> #include <QHttpMultiPart> #include <QNetworkAccessManager> #include <QNetworkRequest> void uploadFile(const QString& url, const QString& filePath) { QNetworkAccessManager* manager = new QNetworkAccessManager(); // 创建一个多部件对象用于存储不同类型的表单项 QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); // 添加文本项作为示例 QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"description\"")); textPart.setBody("This is a test description."); multiPart->append(textPart); // 准备要上传的文件并将其加入 multipart 中 QFile *file = new QFile(filePath); if (!file->open(QIODevice::ReadOnly)) { qDebug() << "Failed to open file"; delete multiPart; return; } QHttpPart imagePart; QFileInfo fileInfo(file->fileName()); imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg")); // 假设是 JPEG 图像 imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(QString("form-data; name=\"uploaded_file\"; filename=\"%1\""). arg(fileInfo.fileName()))); imagePart.setBodyDevice(file); file->setParent(multiPart); // 确保当 multiPart 被销毁时也会关闭文件 multiPart->append(imagePart); // 发送请求 connect(manager, &QNetworkAccessManager::finished, [=](QNetworkReply *reply){ if(reply->error()){ qDebug()<<"Error:"<<reply->errorString(); }else{ qDebug()<<"Upload successful!"; } reply->deleteLater(); // 清理资源 // 当完成之后删除 multipart 和 network access manager multiPart->setBoundary(QByteArray()); // 解除边界设置以便于析构函数正常工作 multiPart->deleteLater(); manager->deleteLater(); }); manager->post(QNetworkRequest(QUrl(url)), multiPart); } ``` 此代码片段展示了创建一个包含文件和额外描述信息的 HTTP 多部分表单,并通过 POST 方法提交至指定 URL 地址的过程。需要注意的是,在实际应用中应当根据具体需求调整 MIME 类型以及可能存在的其他参数配置[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值