日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

用c++写的一个词典工具

發(fā)布時間:2023/12/19 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用c++写的一个词典工具 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用的QT圖形界面,用libcurl獲取的網(wǎng)頁,在之中遇見了很多問題,一直想用c++類封裝一下libcurl,發(fā)現(xiàn)c++很不到家啊。索性用了友元函數(shù)。

先貼上代碼吧

main.cpp?


#include <stdio.h> #include <stdlib.h> #include <unistd.h>#include <curl/curl.h> #include <curl/types.h> #include <curl/easy.h>#include <QtGui/QApplication>#define mydebug 0using namespace std;#include "Dict.h"FILE *fp; //定義FILE類型指針size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) {int written = fwrite(ptr, size, nmemb, (FILE *)fp);return written; }int getpage(QString aUrl) {CURL *curl;QString mUrl="";mUrl.append("http://dict.baidu.com/s?wd=");mUrl.append(aUrl);mUrl.append("&tn=dict");curl_global_init(CURL_GLOBAL_ALL);curl=curl_easy_init();QByteArray ba = mUrl.toLatin1();const char *c_str2 = ba.data();curl_easy_setopt(curl,CURLOPT_URL,c_str2);if((fp=fopen("/home/archy/newfile","w"))==NULL){curl_easy_cleanup(curl);exit(1);}curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);curl_easy_perform(curl);curl_easy_cleanup(curl);return 0; }int main(int argc, char *argv[]) {QApplication a(argc, argv);Dialog w;w.show();return a.exec(); }
Dict.h


#ifndef DICT_H #define DICT_H#include <QtGui> #include "translate.h" #include "one.h"class QPushButton; class QLineEdit; class QTextEdit;class Dialog : public QDialog {Q_OBJECTpublic:Dialog(QWidget *parent = 0);~Dialog();friend int getpage(QString aUrl);QString getResult();private slots:void clearItem();void searchItem();void UpdateClearBtn();void UpdateSearchBtn();private:QPushButton *mClearBtn;QPushButton *mSearchBtn;QLineEdit *mItem;QTextEdit *mResult;one *aone; };#endif // DICT_H
?Dict.cpp


1 #include <QtGui/QHBoxLayout> #include <QtGui/QVBoxLayout> #include "Dict.h" #include <QMessageBox>extern int getpage(QString aUrl);Dialog::Dialog(QWidget *parent): QDialog(parent) {//init class of translate//aone = new one();//init controlsmClearBtn = new QPushButton("Clear");mSearchBtn = new QPushButton("Search");mClearBtn->setFlat(1);mClearBtn->setFixedSize(50,30);mSearchBtn->setFlat(1);mSearchBtn->setFixedSize(50,30);mItem = new QLineEdit;mResult = new QTextEdit;connect(mClearBtn,SIGNAL(clicked()),this,SLOT(clearItem()));connect(mSearchBtn,SIGNAL(clicked()),this,SLOT(searchItem()));QHBoxLayout *aHbox = new QHBoxLayout;aHbox->addWidget(mClearBtn);aHbox->addWidget(mItem);aHbox->addWidget(mSearchBtn);QVBoxLayout *aVbox = new QVBoxLayout;aVbox->addLayout(aHbox);aVbox->addWidget(mResult);setLayout(aVbox); }QString Dialog::getResult() {FILE *fp;char tem;char buffer[2000],final[200];int line = 1,counti=0,token = 0,finalcount=0;fp = fopen("/home/archy/newfile","r");while((tem = fgetc(fp))!=EOF){if(tem=='\n'){line++;if(line==427){break;}}//line++;}fgets(buffer,2000,fp);while(buffer[counti]!='\n' && counti < 2000){if(buffer[counti] == '<'){token = 0;}else if(buffer[counti] == '>'){token = 1;}else if(buffer[counti] != '>' && buffer[counti] != '<' && token == 1){final[finalcount] = buffer[counti];finalcount ++;}counti ++;}final[finalcount] = '\0';//QMessageBox msgBox;//msgBox.setText(final);//msgBox.exec();//QString string = QString(QLatin1String(final)); // QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));return string; }void Dialog::clearItem() {mItem->setText(""); }void Dialog::searchItem() {if(mItem->text() != ""){getpage(mItem->text());QString astring = getResult();//QMessageBox msgBox;//msgBox.setText(astring);//msgBox.exec();mResult->setText(astring);} }Dialog::~Dialog() {}

還有一個問題就是亂碼的問題。

?因為是提取的網(wǎng)頁,只能一個char一個char那樣提取,現(xiàn)在還是沒有想到什么其他辦法提取。之后在char[] 轉(zhuǎn) QString 的時候,總是亂碼。

?

?哪位博友知道怎么解決的話,請給點線索。?


總結(jié)

以上是生活随笔為你收集整理的用c++写的一个词典工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。