欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?Qt開發(fā)之使用QNetworkAccessManager實(shí)現(xiàn)Web網(wǎng)頁訪問

 更新時(shí)間:2024年03月12日 15:04:20   作者:lyshark  
Qt?是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,本文主要介紹了如何運(yùn)用QNetworkAccessManager組件實(shí)現(xiàn)Web網(wǎng)頁訪問,需要的可以參考下

Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹如何運(yùn)用QNetworkAccessManager組件實(shí)現(xiàn)Web網(wǎng)頁訪問。

QNetworkAccessManager是Qt網(wǎng)絡(luò)模塊中的關(guān)鍵類,用于管理網(wǎng)絡(luò)訪問和請(qǐng)求。作為一個(gè)網(wǎng)絡(luò)請(qǐng)求的調(diào)度中心,它為Qt應(yīng)用程序提供了發(fā)送和接收各種類型的網(wǎng)絡(luò)請(qǐng)求的能力,包括常見的GET、POST、PUT、DELETE等。這個(gè)模塊的核心功能在于通過處理QNetworkReplyQNetworkRequest來實(shí)現(xiàn)與網(wǎng)絡(luò)資源的交互。

通過QNetworkAccessManager,Qt應(yīng)用程序能夠輕松地與遠(yuǎn)程服務(wù)器通信,獲取數(shù)據(jù)或?qū)?shù)據(jù)上傳到服務(wù)器。這種網(wǎng)絡(luò)請(qǐng)求的管理不僅是異步的,以確保不會(huì)阻塞主線程,還提供了豐富的信號(hào)和槽機(jī)制,使得開發(fā)者可以靈活地處理不同階段的網(wǎng)絡(luò)操作。

通常,QNetworkAccessManager會(huì)與QNetworkReplyQNetworkRequest一起使用。QNetworkRequest用于封裝和配置網(wǎng)絡(luò)請(qǐng)求的各種屬性,例如URL、請(qǐng)求頭等。而QNetworkReply則代表了對(duì)網(wǎng)絡(luò)請(qǐng)求的響應(yīng),包含了請(qǐng)求返回的數(shù)據(jù)和相關(guān)信息。這三者共同協(xié)作,為Qt應(yīng)用程序提供了便捷、靈活且強(qiáng)大的網(wǎng)絡(luò)通信能力。

1.通用API函數(shù)

1.1QNetworkAccessManager

要想實(shí)現(xiàn)網(wǎng)絡(luò)通信首先需要新建一個(gè)網(wǎng)絡(luò)訪問管理器,以下是QNetworkAccessManager類中的一些常用函數(shù)及其描述:

函數(shù)描述
QNetworkAccessManager(QObject *parent = nullptr)構(gòu)造函數(shù),創(chuàng)建一個(gè)QNetworkAccessManager實(shí)例。
virtual ~QNetworkAccessManager()虛析構(gòu)函數(shù),釋放QNetworkAccessManager實(shí)例。
QNetworkReply *get(const QNetworkRequest &request)發(fā)送GET請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data)發(fā)送POST請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data)發(fā)送POST請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data)發(fā)送PUT請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data)發(fā)送PUT請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *deleteResource(const QNetworkRequest &request)發(fā)送DELETE請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *head(const QNetworkRequest &request)發(fā)送HEAD請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)發(fā)送自定義請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)發(fā)送自定義請(qǐng)求,并返回與請(qǐng)求關(guān)聯(lián)的QNetworkReply對(duì)象。
void setConfiguration(const QNetworkConfiguration &config)設(shè)置網(wǎng)絡(luò)配置,用于定制網(wǎng)絡(luò)行為。
QNetworkConfiguration configuration() const獲取當(dāng)前網(wǎng)絡(luò)配置。
void clearAccessCache()清除網(wǎng)絡(luò)訪問緩存。
void setCache(QAbstractNetworkCache *cache)設(shè)置網(wǎng)絡(luò)緩存。
QAbstractNetworkCache *cache() const獲取當(dāng)前網(wǎng)絡(luò)緩存。
void setCookieJar(QNetworkCookieJar *cookieJar)設(shè)置用于管理HTTP cookie的QNetworkCookieJar。
QNetworkCookieJar *cookieJar() const獲取當(dāng)前的HTTP cookie管理器。

這些函數(shù)提供了QNetworkAccessManager的核心功能,使得開發(fā)者能夠方便地進(jìn)行各種類型的網(wǎng)絡(luò)請(qǐng)求,配置網(wǎng)絡(luò)參數(shù),并進(jìn)行相關(guān)的網(wǎng)絡(luò)管理操作。

1.2QNetworkReply

以下是QNetworkReply類中的一些常用函數(shù)及其描述:

函數(shù)描述
QByteArray readAll() const讀取所有可用的數(shù)據(jù),并返回一個(gè)QByteArray,包含從網(wǎng)絡(luò)回復(fù)讀取的所有內(nèi)容。
QByteArray peek(int maxSize) const查看最多maxSize字節(jié)的可用數(shù)據(jù),但不從緩沖區(qū)中移除。
QByteArray read(int maxSize)從網(wǎng)絡(luò)回復(fù)中讀取最多maxSize字節(jié)的數(shù)據(jù),并將其從緩沖區(qū)中移除。
QByteArray readLine(int maxSize = 0)從網(wǎng)絡(luò)回復(fù)中讀取一行數(shù)據(jù),最多包含maxSize字節(jié),并將其從緩沖區(qū)中移除。
void ignoreSslErrors(const QList<QSslError> &errors = QList<QSslError>())忽略SSL錯(cuò)誤,繼續(xù)處理網(wǎng)絡(luò)回復(fù)。
void abort()終止網(wǎng)絡(luò)回復(fù)的處理,關(guān)閉底層連接。
void close()關(guān)閉網(wǎng)絡(luò)回復(fù)的處理。
QUrl url() const返回與網(wǎng)絡(luò)回復(fù)相關(guān)聯(lián)的URL。
QNetworkRequest request() const返回生成此網(wǎng)絡(luò)回復(fù)的網(wǎng)絡(luò)請(qǐng)求。
QNetworkAccessManager *manager() const返回與網(wǎng)絡(luò)回復(fù)相關(guān)聯(lián)的QNetworkAccessManager。
bool isFinished() const檢查網(wǎng)絡(luò)回復(fù)是否已完成。
QNetworkReply::NetworkError error() const返回網(wǎng)絡(luò)回復(fù)的錯(cuò)誤代碼。
bool hasRawHeader(const QByteArray &headerName) const檢查網(wǎng)絡(luò)回復(fù)是否包含指定原始頭。
QList<QByteArray> rawHeaderList() const返回網(wǎng)絡(luò)回復(fù)的所有原始頭的列表。
QByteArray rawHeader(const QByteArray &headerName) const返回指定原始頭的值。
QVariant header(QNetworkRequest::KnownHeaders header) const返回指定標(biāo)準(zhǔn)頭的值。
QList<QByteArray> rawHeaderValues(const QByteArray &headerName) const返回指定原始頭的所有值。
QVariant attribute(QNetworkRequest::Attribute code) const返回指定網(wǎng)絡(luò)請(qǐng)求屬性的值。
QIODevice *readAllStandardOutput()讀取標(biāo)準(zhǔn)輸出的所有數(shù)據(jù),并返回一個(gè)QIODevice,用于訪問讀取的內(nèi)容。
QIODevice *readAllStandardError()讀取標(biāo)準(zhǔn)錯(cuò)誤的所有數(shù)據(jù),并返回一個(gè)QIODevice,用于訪問讀取的內(nèi)容。
bool isReadable() const檢查網(wǎng)絡(luò)回復(fù)是否可讀取。

這些函數(shù)提供了對(duì)QNetworkReply實(shí)例進(jìn)行各種操作和查詢的方法,包括讀取回復(fù)數(shù)據(jù)、處理SSL錯(cuò)誤、獲取請(qǐng)求信息、檢查錯(cuò)誤狀態(tài)等。開發(fā)者可以根據(jù)具體需求使用這些函數(shù)來有效地與網(wǎng)絡(luò)回復(fù)進(jìn)行交互。

1.3QNetworkRequest

以下是QNetworkRequest類中的一些常用函數(shù)及其描述:

函數(shù)描述
QNetworkRequest(const QUrl &url)使用給定的URL構(gòu)造一個(gè)QNetworkRequest實(shí)例。
void setUrl(const QUrl &url)設(shè)置QNetworkRequest的URL。
QUrl url() const返回與QNetworkRequest相關(guān)聯(lián)的URL。
void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)設(shè)置指定原始頭的值。
QByteArray rawHeader(const QByteArray &headerName) const返回指定原始頭的值。
bool hasRawHeader(const QByteArray &headerName) const檢查QNetworkRequest是否包含指定原始頭。
void setRawHeaderList(const QList<QByteArray> &headerList)設(shè)置所有原始頭的列表。
QList<QByteArray> rawHeaderList() const返回QNetworkRequest的所有原始頭的列表。
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)設(shè)置指定標(biāo)準(zhǔn)頭的值。
QVariant header(QNetworkRequest::KnownHeaders header) const返回指定標(biāo)準(zhǔn)頭的值。
void setAttribute(QNetworkRequest::Attribute code, const QVariant &value)設(shè)置指定網(wǎng)絡(luò)請(qǐng)求屬性的值。
QVariant attribute(QNetworkRequest::Attribute code) const返回指定網(wǎng)絡(luò)請(qǐng)求屬性的值。
void setSslConfiguration(const QSslConfiguration &config)設(shè)置SSL配置。
QSslConfiguration sslConfiguration() const返回SSL配置。
void setMaximumRedirectsAllowed(int maxRedirects)設(shè)置允許的最大重定向次數(shù)。
int maximumRedirectsAllowed() const返回允許的最大重定向次數(shù)。
void setOriginatingObject(QObject *object)設(shè)置發(fā)起此網(wǎng)絡(luò)請(qǐng)求的對(duì)象。
QObject *originatingObject() const返回發(fā)起此網(wǎng)絡(luò)請(qǐng)求的對(duì)象。
bool isEmpty() const檢查QNetworkRequest是否為空(未設(shè)置URL)。

這些函數(shù)提供了對(duì)QNetworkRequest實(shí)例進(jìn)行各種操作和查詢的方法,包括設(shè)置和獲取頭信息、設(shè)置SSL配置、設(shè)置和獲取網(wǎng)絡(luò)請(qǐng)求屬性等。開發(fā)者可以根據(jù)具體需求使用這些函數(shù)來有效地構(gòu)建和管理網(wǎng)絡(luò)請(qǐng)求。

2.實(shí)現(xiàn)Web頁面訪問

要使用該模塊讀者應(yīng)該在*.pro文件內(nèi)包含network網(wǎng)絡(luò)模塊,并在頭文件中引入QNetworkAccessManager、QNetworkReply、QNetworkRequest三個(gè)類,在建立訪問時(shí)首先使用QNetworkAccessManager新增一個(gè)manager管理類,并通過QNetworkRequest類創(chuàng)建一個(gè)GET請(qǐng)求地址,通過使用manager.get方法實(shí)現(xiàn)對(duì)特定頁面的訪問。

當(dāng)訪問完成時(shí)需要通過一個(gè)信號(hào)來實(shí)現(xiàn)對(duì)數(shù)據(jù)的處理,在QNetworkReply類中包含有如下表所示的信號(hào)以供讀者使用,例如當(dāng)訪問被完成時(shí)則自動(dòng)觸發(fā)&QNetworkReply::finished完成信號(hào),此時(shí)只需要對(duì)該信號(hào)進(jìn)行相應(yīng)的處理即可,通常會(huì)使用一個(gè)槽函數(shù)來處理它。

信號(hào)描述
finished()當(dāng)網(wǎng)絡(luò)請(qǐng)求完成時(shí)發(fā)出。
downloadProgress(qint64, qint64)在下載過程中定期發(fā)出,提供下載進(jìn)度信息。參數(shù)為已下載的字節(jié)數(shù)和總字節(jié)數(shù)。
uploadProgress(qint64, qint64)在上傳過程中定期發(fā)出,提供上傳進(jìn)度信息。參數(shù)為已上傳的字節(jié)數(shù)和總字節(jié)數(shù)。
readyRead()當(dāng)有可讀取的數(shù)據(jù)時(shí)發(fā)出,用于通知應(yīng)用程序可以調(diào)用readAll()或read()方法以獲取更多數(shù)據(jù)。
error(QNetworkReply::NetworkError)當(dāng)網(wǎng)絡(luò)請(qǐng)求發(fā)生錯(cuò)誤時(shí)發(fā)出,參數(shù)為錯(cuò)誤代碼。
sslErrors(const QList<QSslError> &)當(dāng)SSL錯(cuò)誤發(fā)生時(shí)發(fā)出,參數(shù)為SSL錯(cuò)誤的列表。

這些信號(hào)提供了豐富的信息,使開發(fā)者能夠在不同階段處理網(wǎng)絡(luò)請(qǐng)求。同理,在下載和上傳過程中可以使用downloadProgressuploadProgress信號(hào)來獲取進(jìn)度信息,readyRead信號(hào)表示有可讀取的數(shù)據(jù),error信號(hào)表示請(qǐng)求發(fā)生錯(cuò)誤,sslErrors信號(hào)表示SSL相關(guān)的錯(cuò)誤。

當(dāng)信號(hào)被觸發(fā)時(shí)則會(huì)通過QObject::connect連接到對(duì)應(yīng)的槽函數(shù)上,如下案例中所示,在槽函數(shù)內(nèi)通過reply->attribute方法我們獲取到此次響應(yīng)碼中的QNetworkRequest::HttpStatusCodeAttribute屬性,該屬性用來指明本次訪問的狀態(tài)值。此類屬性也有許多可供參考,如下所示;

屬性描述
QNetworkRequest::HttpStatusCodeAttributeHTTP響應(yīng)的狀態(tài)碼。
QNetworkRequest::HttpReasonPhraseAttributeHTTP響應(yīng)的原因短語,如"OK"、"Not Found"等。
QNetworkRequest::RedirectionTargetAttribute重定向目標(biāo)的URL。
QNetworkRequest::ConnectionEncryptedAttribute連接是否加密的標(biāo)志,返回一個(gè)bool值。
QNetworkRequest::SourceIsFromCacheAttribute請(qǐng)求是否來自緩存的標(biāo)志,返回一個(gè)bool值。
QNetworkRequest::HttpPipeliningAllowedAttribute是否允許HTTP流水線傳輸?shù)臉?biāo)志,返回一個(gè)bool值。
QNetworkRequest::HttpPipeliningWasUsedAttribute是否使用了HTTP流水線傳輸?shù)臉?biāo)志,返回一個(gè)bool值。
QNetworkRequest::CustomVerbAttribute自定義請(qǐng)求動(dòng)作(HTTP verb)的字符串。
QNetworkRequest::User用戶自定義的屬性,用于存儲(chǔ)任意類型的用戶數(shù)據(jù)。

這些屬性提供了額外的信息,使得開發(fā)者能夠更全面地了解和處理網(wǎng)絡(luò)響應(yīng)。根據(jù)具體的應(yīng)用需求,開發(fā)者可以選擇使用這些屬性中的一個(gè)或多個(gè)來獲取所需的信息。

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 創(chuàng)建網(wǎng)絡(luò)訪問管理器
    QNetworkAccessManager manager;

    // 創(chuàng)建GET請(qǐng)求
    QNetworkRequest request(QUrl("http://www.baidu.com"));

    // 發(fā)送GET請(qǐng)求
    QNetworkReply *reply = manager.get(request);

    // 連接信號(hào)槽,處理響應(yīng)
    QObject::connect(reply, &QNetworkReply::finished, [&]()
    {
        if (reply->error() == QNetworkReply::NoError)
        {
            // 獲取請(qǐng)求的 URL
            qDebug() << "Request URL:" << reply->request().url();

            // 輸出請(qǐng)求頭信息
            qDebug() << "Request Headers:";
            QList<QByteArray> requestHeaders = reply->request().rawHeaderList();
            foreach (const QByteArray &header, requestHeaders) {
                qDebug() << header << ":" << reply->request().rawHeader(header);
            }

            // 獲取響應(yīng)碼
            int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
            qDebug() << "HttpStatusCodeAttribute:" << statusCode;

            // 連接是否加密的標(biāo)志
            bool connectionEncryptedAttribute = reply->attribute(QNetworkRequest::ConnectionEncryptedAttribute).toBool();
            qDebug() << "ConnectionEncryptedAttribute:" << connectionEncryptedAttribute;

            // 請(qǐng)求是否來自緩存的標(biāo)志
            bool sourceIsFromCacheAttribute = reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool();
            qDebug() << "SourceIsFromCacheAttribute:" << sourceIsFromCacheAttribute;

            // HTTP請(qǐng)求是否被允許進(jìn)行流水線處理的標(biāo)志
            bool httpPipeliningAllowedAttribute = reply->attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool();
            qDebug() << "HttpPipeliningAllowedAttribute:" << httpPipeliningAllowedAttribute;

            // 輸出響應(yīng)頭信息
            qDebug() << "Response Headers:";
            QList<QByteArray> responseHeaders = reply->rawHeaderList();
            foreach (const QByteArray &header, responseHeaders) {
                qDebug() << header << ":" << reply->rawHeader(header);
            }

            // 處理響應(yīng)內(nèi)容,這里可以使用 readAll() 方法獲取響應(yīng)內(nèi)容
            // qDebug() << "Response Content:" << reply->readAll();
        } else
        {
            qDebug() << "Error:" << reply->errorString();
        }

        // 釋放資源
        reply->deleteLater();
        QCoreApplication::quit();
    });

    return a.exec();
}

讀者可自行編譯并運(yùn)行這段代碼,觀察請(qǐng)求與相應(yīng)數(shù)據(jù)如下圖所示;

至于如何在圖形界面中使用則就更簡單了,首先我們?cè)?code>mainwindow.h頭文件中定義好所需要的兩個(gè)槽函數(shù),函數(shù)on_finished()用于在完成請(qǐng)求后被調(diào)用,函數(shù)on_readyRead()則用于在回調(diào)被執(zhí)行后調(diào)用,并并以兩個(gè)網(wǎng)絡(luò)管理類的指針變量,如下所示;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    //自定義槽函數(shù)
    void on_finished();
    void on_readyRead();

    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager networkManager;   // 網(wǎng)絡(luò)管理
    QNetworkReply *reply;                   // 網(wǎng)絡(luò)響應(yīng)
};

當(dāng)獲取按鈕被點(diǎn)擊后則開始執(zhí)行讀入指定URL地址,并對(duì)該地址進(jìn)行網(wǎng)頁訪問,同時(shí)綁定這兩個(gè)信號(hào),一旦被觸發(fā)則自動(dòng)路由到對(duì)應(yīng)的槽函數(shù)上面去,如下所示;

void MainWindow::on_pushButton_clicked()
{
    // 讀入U(xiǎn)RL地址
    QString urlSpec = ui->lineEdit->text().trimmed();
    if (urlSpec.isEmpty())
    {
        QMessageBox::information(this, "錯(cuò)誤", "請(qǐng)指定URL");
        return;
    }

    // 格式化URL
    QUrl newUrl = QUrl::fromUserInput(urlSpec);
    if (!newUrl.isValid())
    {
        QMessageBox::information(this, "錯(cuò)誤", QString("無效URL: %1").arg(urlSpec));
        return;
    }

    // 訪問頁面
    reply = networkManager.get(QNetworkRequest(newUrl));

    // 完成時(shí)的槽函數(shù)綁定
    connect(reply, SIGNAL(finished()), this, SLOT(on_finished()));

    // 讀入數(shù)據(jù)的槽函數(shù)綁定
    connect(reply, SIGNAL(readyRead()), this, SLOT(on_readyRead()));

}

相對(duì)應(yīng)的,在on_finished()槽函數(shù)中我們將響應(yīng)頭讀出并輸出到文本框中,在on_readyRead()槽函數(shù)中則是對(duì)整個(gè)網(wǎng)站頁面源代碼的輸出功能,完整代碼如下所示;

void MainWindow::on_finished()
{
    // 獲取響應(yīng)碼
    int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

    if(statusCode == 200)
    {
        ui->plainTextEdit_2->appendPlainText("響應(yīng)頭數(shù)據(jù):");
        // 輸出響應(yīng)頭信息
        QList<QByteArray> responseHeaders = reply->rawHeaderList();
        foreach (const QByteArray &header, responseHeaders)
        {
            ui->plainTextEdit_2->appendPlainText(header + " : " + reply->rawHeader(header));
        }
    }
}

// 讀入頁面源代碼
void MainWindow::on_readyRead()
{
    ui->plainTextEdit->setPlainText(reply->readAll());
}

運(yùn)行代碼,讀者可自行輸入特定的網(wǎng)站進(jìn)行讀取測(cè)試,如下所示(完整代碼請(qǐng)參考課件部分);

以上就是C++ Qt開發(fā)之使用QNetworkAccessManager實(shí)現(xiàn)Web網(wǎng)頁訪問的詳細(xì)內(nèi)容,更多關(guān)于Qt QNetworkAccessManager的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu) 數(shù)組順序存儲(chǔ)詳細(xì)介紹

    數(shù)據(jù)結(jié)構(gòu) 數(shù)組順序存儲(chǔ)詳細(xì)介紹

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 數(shù)組順序存儲(chǔ)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++?LeetCode542矩陣示例詳解

    C++?LeetCode542矩陣示例詳解

    這篇文章主要為大家介紹了C++?LeetCode542矩陣示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++實(shí)現(xiàn)銀行排隊(duì)系統(tǒng)

    C++實(shí)現(xiàn)銀行排隊(duì)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)銀行排隊(duì)系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 淺談c++中的異常處理機(jī)制

    淺談c++中的異常處理機(jī)制

    C++異常處理機(jī)制通過try/catch/throw結(jié)構(gòu)處理運(yùn)行時(shí)錯(cuò)誤,本文就來介紹一下c++中的異常處理機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • C++印刷模板使用方法詳解

    C++印刷模板使用方法詳解

    模板是C++支持參數(shù)化多態(tài)的工具,使用模板可以使用戶為類或者函數(shù)聲明一種一般模式,使得類中的某些數(shù)據(jù)成員或者成員函數(shù)的參數(shù)、返回值取得任意類型
    2022-11-11
  • Android App仿微信界面切換時(shí)Tab圖標(biāo)變色效果的制作方法

    Android App仿微信界面切換時(shí)Tab圖標(biāo)變色效果的制作方法

    這篇文章主要介紹了Android App仿微信界面切換時(shí)Tab圖標(biāo)變色效果的制作方法,重點(diǎn)講解了圖標(biāo)的繪制技巧,需要的朋友可以參考下
    2016-04-04
  • c++類和對(duì)象基本概念

    c++類和對(duì)象基本概念

    這篇文章主要為大家介紹了c++類和對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • C/C++實(shí)現(xiàn)發(fā)送與接收HTTP/S請(qǐng)求的示例代碼

    C/C++實(shí)現(xiàn)發(fā)送與接收HTTP/S請(qǐng)求的示例代碼

    HTTP(Hypertext Transfer Protocol)是一種用于傳輸超文本的協(xié)議,它是一種無狀態(tài)的、應(yīng)用層的協(xié)議,用于在計(jì)算機(jī)之間傳輸超文本文檔,通常在 Web 瀏覽器和 Web 服務(wù)器之間進(jìn)行數(shù)據(jù)通信,本文給大家介紹了C/C++發(fā)送與接收HTTP/S請(qǐng)求,需要的朋友可以參考下
    2023-11-11
  • c語言實(shí)現(xiàn)簡單的易語言

    c語言實(shí)現(xiàn)簡單的易語言

    在本篇內(nèi)容里小編給大家整理了一篇關(guān)于c語言實(shí)現(xiàn)一個(gè)簡單的易語言的相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2018-12-12
  • C++中的單例模式介紹

    C++中的單例模式介紹

    單例模式也稱為單件模式、單子模式,可能是使用最廣泛的設(shè)計(jì)模式。其意圖是保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn),該實(shí)例被所有程序模塊共享
    2013-03-03

最新評(píng)論