Qt工作笔记-QString中Split与section效率实践
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-QString中Split与section效率实践
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看了大佬的代碼,發現他們都喜歡用section,對spilt感覺,他們不太喜歡用!!
下面對這兩個函數進行簡單的分析
?
split在官方的說明如下:
并且在最后,還給出了這個:
說名section與split可以實現某種相同的功能!
來看下section的函數:
可以知道這個函數比較復雜,他可以用1行代碼,實現split 幾行代碼的功能;并且還提供了一個flags。
?
這里給出他們變量xxxxx,xxxxxxxx,xxxxxxxxx....這種用逗號分割的字符串,
看看效【一共有10086條這樣的數據】:
首先是Split函數:
效率如下【部分電腦應該不同,本人筆記本i5 4代的,比較辣雞】:
,,然后是section函數:
效率如下:
?
總結下:
1.當簡單對字符串處理的時候優先考慮split函數,當要實現復制的就用section函數;
2.section比split高級,因為最后一個參數是flag,這個參數看著就讓人興奮!
?
源碼如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected slots:void splitBtnClicked();void sectionBtnClicked();private:Ui::Widget *ui;QString m_str;int m_strCount; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QMessageBox> #include <ctime>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("CSDN IT1995");connect(ui->splitPushButton,SIGNAL(clicked(bool)),this,SLOT(splitBtnClicked()));connect(ui->sectionPushButton,SIGNAL(clicked(bool)),this,SLOT(sectionBtnClicked()));m_str="11111111,22222222,33333333";for(int i=0;i<10083;i++){m_str.append(",xxxxxxxxxxx");}m_strCount=m_str.split(",").size(); }Widget::~Widget() {delete ui; }void Widget::splitBtnClicked() {clock_t start,finish;double totalTime;//using "qDebug()" to simulate operationstart=clock();QStringList list=m_str.split(",");for(int i=0;i<m_strCount;i++){qDebug()<<list[i];}finish=clock();totalTime=(double)(finish-start)/CLOCKS_PER_SEC;QMessageBox::information(this,"information","using split() takes "+QString::number(totalTime,'f',6)+" second!"); }void Widget::sectionBtnClicked() {clock_t start,finish;double totalTime;//using "qDebug()" to simulate operationstart=clock();for(int i=0;i<m_strCount;i++){qDebug()<<m_str.section(",",i,i);}finish=clock();totalTime=(double)(finish-start)/CLOCKS_PER_SEC;QMessageBox::information(this,"information","using split() takes "+QString::number(totalTime,'f',6)+" second!"); }?
總結
以上是生活随笔為你收集整理的Qt工作笔记-QString中Split与section效率实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++工作笔记-3种方法对数据类型进行拆
- 下一篇: Qt工作笔记-QTreeWidget中i