Qt字符串處理 QString用法總結(一)


格式化需要的字符串

QDate date=QDate::currentDate(); // 得到系統的日期
Time time=QTime::currentTime();  // 得到系統的時間

到系統的當前日期和時間

QString systemDateTime=QString("%1/%2 %3:%4:%5").arg(date.month(),2,10,QChar('0')).arg(date.day(),2,10,QChar('0')).arg(time.hour(),2,10,QChar('0')).arg(time.minute(),2,10,QChar('0')).arg(time.second(),2,10,QChar('0'));

運行程序,得到的結果為:
"03/31 15:29:46"

函數解析:

QString QString::arg (long a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ') ) const
QString:該函數的返回值為 QString 的類型
const QString & a: 表示輸入的字符串, 需要格式化的 int base = 10: 表示進制 nt fieldWidth = 0: 表示需要格式化的字符串的寬度 const QChar & fillChar = QLatin1Char(' ') : 表示填充的字符串 若是字符寬度 fieldWidth 是正數,fillchar 填在左邊,若是負數,fillchar 填在右邊
參考文章:
1,QString 中的 arg 函數的使用
2,QString 的使用方法介紹
二:char * 和 QString 之間的轉換

    在進行編程時,我們經常需要用到字符串這種類型,毫無疑問,Qt 庫中也對字符串類型進行了封裝,QString 類提供了你能想到的所有字符串操作方法,給開發者帶來了極大方便。 
  但是我們在編寫程序時,不可避免地會在 Qt 框架上使用第三方的開源庫,由於庫的類型基本上都是標准的類型,即使用 char * 來表示字符串類型。那么問題來了,QString 和 char * 之間如何進行轉換呢?

  下面分兩種情況進行說明。

一、QString 轉換為 char *

  將 QString 轉 char *,需要用到 QByteArray 類,QByteArray 類的說明詳見 Qt 幫助文檔。 
  因為 char * 最后都有一個'\0'作為結束符,而采用 QString::toLatin1() 時會在字符串后面加上'\0'

方法如下:

QString  str;
char*  ch;
QByteArray ba = str.toLatin1(); // must
ch=ba.data();

  這樣就完成了 QString 向 char * 的轉化。經測試程序運行時不會出現 bug。注意第 3 行,一定要加上,不可以 str.toLatin1().data() 這樣一步完成,否則可能會出錯。 
   
  補充:以上方法當 QString 里不含中文時,沒有問題,但是 QString 內含有中文時,轉換為 char * 就是亂碼,采用如下方法解決:

方法 1:

添加 GBK 編碼支持:

#include <QTextCodec>

QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));

然后將上面的第 3 行修改為:

QByteArray ba = str.toLocal8Bit();  // toLocal8Bit 支持中文

方法 2:

  先將 QString 轉為標准庫中的 string 類型,然后將 string 轉為 char *。如下:

QString  filename;
std::string str = filename.toStdString();
const char* ch = str.c_str();

二、 char * 轉換為 QString

  將 char * 轉換為 QString 比較容易操作,我們可以使用 QString 的構造函數進行轉換:

QString(const QLatin1String &str);

  QLatin1String 的構造函數:

QLatin1String(const char *str);

  因此用下面這個語句就可以將 char * ch 轉換為 QString str 了,如下:

str = QString(QLatin1String(ch));

注:數字類型時,可以用, int value=(unsigned char)(unsigned char data)

原文地址:https://blog.csdn.net/lu_embedded/article/details/52465203

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM