在工程項目開發中,遇到這么個問題:手工計入文件中的數據,每行有三個,前兩個是數字,最后一個是標識,現在把這3個數據提取出來。
一提取就出現問題了:由於手工導入,數據間使用空白間隔,有可能是一個空格,有可能多個空格,怎么成功提取了?看Qt文檔,終於找到這么個好用的函數。直接給干貨吧!
- QString fileName = QFileDialog::getOpenFileName(this,
- tr("打開文件"),
- /*openPath*/".",
- tr("ini文件 (*.ini)"));
- if(!fileName.isEmpty())
- {
- QFile file(fileName);
- if(!file.open(QIODevice::ReadOnly))
- {
- qDebug()<<"open error!";
- return;
- }
- QTextStream txtInput(&file);
- while(!txtInput.atEnd())
- {
- QString lineStr;
- lineStr = txtInput.readLine();
- QStringList str_list = lineStr<span style="color:#ff0000;">.simplified()</span>.split(" ");
- bool ok;
- double a = str_list.at(0).toDouble(&ok);
- double b = str_list.at(1).toDouble(&ok);
- QString c = str_list.at(2);
- title.append(a);//title、number、myStr是QVector類型,由於后面要用,是在.h文件內聲明的
- number.append(b);
- myStr.append(c);
- }
- QFileInfo infomation = QFileInfo(fileName);
- QString name = QString(tr("選取文件是:")) + infomation.fileName();
- ui->fileLabel->setText(name);
- emit sigDataInit();
- file.close();
- }
這里要講講simplified()功能,這個函數把一個字符串首尾的空格全部清除,不管首尾是幾個空格哦。字符串中間的空格(包括單個空格、多個空格、\t、\n)都統一轉化成一個空格,這樣就方便提取了,我們再使用split()函數就能很好拆分了。
http://blog.csdn.net/u010111033/article/details/53892959