Qt中 QString 和int, char等的“相互”转换

来源:互联网 发布:淘宝嘉联华 编辑:程序博客网 时间:2024/05/18 01:47
Qt中 QString 和int, char等的“相互”转换


Qt中 int ,float ,double转换为QString

有两种方法

1.使用

QString::number();

如:

[cpp]view plain copy
 print?
  1. long a = 63;  
  2. QString s = QString::number(a, 10);             // s == "63"  
  3. QString t = QString::number(a, 16).toUpper();     // t == "3F"  
(解释,变量a为int型或者float,double。10和16为进制) toUpper是大写

2.使用

[cpp]view plain copy
 print?
  1. long a = 63;  
  2. QString s = QString("%1").arg(a);  
这个嘛,我不常用


把QString转换为 double类型

方法1.

[cpp]view plain copy
 print?
  1. QString str="123.45";  
  2. double val=str.toDouble(); //val=123.45  


方法2.很适合科学计数法形式转换

[cpp]view plain copy
 print?
  1. bool ok;  
  2. double d;  
  3. d=QString("1234.56e-02").toDouble(&ok); //ok=true;d;12.3456.  


 

把QString转换为float形

1.

[cpp]view plain copy
 print?
  1. QString str="123.45";  
  2. float d=str.toFloat(); //d=123.45  

2.

[html]view plain copy
 print?
  1. QString str="R2D2";  
  2. bool ok;  
  3. float d=str.toFloat(&ok); //转换是被时返回0.0,ok=false;  

把QString形转换为整形

1.转换为十进制整形

注意:基数默认为10。当基数为10时,并且基数必须在2到36之

间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

[cpp]view plain copy
 print?
  1. Qstring str="FF";  
  2. bool ok;  
  3. int dec=str.toInt(&ok,10); //dec=255 ; ok=rue  
  4. int hex =str.toInt(&ok,16); //hex=255;ok=true;  


3.常整形转换为Qstring形

[cpp]view plain copy
 print?
  1. long a =63;  
  2. QString str=QString::number(a,16); //str="3f";  
  3. QString str=QString::number(a,16).toUpper(); //str="3F";  


Qstring 转换char*问题!

方法一:

[cpp]view plain copy
 print?
  1. QString qstr("hello,word");  
  2. const char * p = qstr.toLocal8Bit().data();  


方法二:
[cpp]view plain copy
 print?
  1. const char *p = qstr.toStdString().data();  


转换过来的是常量

把当前时间转化为QString...

public QDateTime qdate = QDateTime.currentDateTime();
datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类
QString Time2String( DWORD dwTime)
{
char cTime[50] = {0};
memset(cTime,0,50);
strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
return QString(cTime);
}


Qt的QString类提供了很方便的对字符串操作的接口。

  1. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。
QString::fill ( QChar ch, int size = -1 )

例:

     QString str = "Berlin";     str.fill('z');     // str == "zzzzzz"     str.fill('A', 2);     // str == "AA"

2,从字符串里查找相同的某个字符串str。

int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

例如:

QString x = "sticky question";     QString y = "sti";     x.indexOf(y);               // returns 0     x.indexOf(y, 1);            // returns 10     x.indexOf(y, 10);           // returns 10     x.indexOf(y, 11);           // returns -1

3指定位置插入字符串

QString & QString::insert ( int position, const QString & str )

例如:

     QString str = "Meal";     str.insert(1, QString("ontr"));     // str == "Montreal"

3,判断字符串是否为空。

bool QString::isEmpty () const

如:

     QString().isEmpty();            // returns true     QString("").isEmpty();          // returns true     QString("x").isEmpty();         // returns false     QString("abc").isEmpty();       // returns false

4.判断字符串是否存在。

bool QString::isNull () const

例如:

     QString().isNull();             // returns true     QString("").isNull();           // returns false     QString("abc").isNull();        // returns false

5,从左向右截取字符串

QString QString::left ( int n ) const

例如:

     QString x = "Pineapple";     QString y = x.left(4);      // y == "Pine"

6,从中间截取字符串。

QString QString::mid ( int position, int n = -1 ) const

例如:

  QString x = "Nine pineapples";     QString y = x.mid(5, 4);            // y == "pine"     QString z = x.mid(5);               // z == "pineapples"

7,删除字符串中间某个字符。

QString & QString::remove ( int position, int n )

例如:

     QString s = "Montreal";     s.remove(1, 4);     // s == "Meal"

8,替换字符串中的某些字符。

QString & QString::replace ( int position, int n, const QString & after )

例如:

     QString x = "Say yes!";     QString y = "no";     x.replace(4, 3, y);     // x == "Say no!"

9,以某个字符切割字符串。(最近经常用到的)

QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const

例如:

复制代码
   QString str;     QString csv = "forename,middlename,surname,phone";     QString path = "/usr/local/bin/myapp"; // First field is empty     QString::SectionFlag flag = QString::SectionSkipEmpty;     str = csv.section(',', 2, 2);   // str == "surname"     str = path.section('/', 3, 4);  // str == "bin/myapp"     str = path.section('/', 3, 3, flag); // str == "myapp"
复制代码

10,把整型,浮点型,或其他类型转化为QString

QString & QString::setNum ( uint n, int base = 10 )



1 0