(转自:http://qimo601.iteye.com/blog/1260479)

1、char * 与 const char *的转换

char *ch1="hello11";
const char *ch2="hello22";
ch2 = ch1;//不报错,但有警告
ch1 = (char *)ch2;

 2、char 与 QString的转换

char 转换为 QString
其实方法有很多中,我用的是:
char a='b';
QString str;
str=QString(a);

QString 转换为 char
方法也有很多种
QString str="abc";
char *ch;
QByteArray ba = str.toLatin1()
ch = ba.data();
注意:在调用QByteArray.data()之前,必须要先显示储存这个bytearray。像这样const char *ch = str.toLatin1().data();会使程序崩溃,因为QByteArray没有被储存,调用data()前是不存在的,必须先显式调用一次toLatin1(),再调用data()。

 3、QByteArray 与 char* 的转换

QByteArray 转换为 char *
char *ch;//不要定义成ch[n];
QByteArray byte;
ch = byte.data();

char * 转换为 QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);

4、QString 与 QByteArray 的转换

QString转换为QByteArray
QByteArray byte;
QString string;
byte = string.toAscii();

QByteArray 转换为 QString
QByteArray byte;
QString string;
string = QString(byte);

这里再对这俩中类型的输出总结一下:
qDebug()<<"print";
qDebug()<<tr("print");
qDebug()<<ch;(ch 为char类型)
qDebug()<<tr(ch);
qDebug()<<byteArray;(byteArray是QByteArray类型)
qDebug()<<tr(byteArray);
qDebug()<<str;(str 为Qstring类型)
但是qDebug()<<tr(str);是不可以的,要想用tr()函数输出QString类型的字符则要如下:
qDebug()<<tr(str.toLatin1);

5 、int与 QString 的转换

int 转 QString
int a=10;
QString b;
b=QString::number(a)

QString 转int
QString a="120"
int b;
b=a.toInt()

5、QString与string的转换

QString --> string
QString.toStdString();
string --> QString
QString::fromStdString(string)

6、QString与其他类型的转换

QString --->int,double,char *
QString::toInt()
QString::toDouble()
QString.toStdString().c_str();

7、 int double char* --->string

可以采用<sstream>里的stringstream

以int 为例,int a = 3;
stringstream ss;
string strInt;
ss<<a;
ss>>strInt;

 8、QString--->QDateTime

  1. QDateTime转QString
  2. public QDateTime qdate = QDateTime.currentDateTime();
  3. datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
  4. //2012年03月-05日Monday13:48:55
  5. QString转换成QDateTime
  6. QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02",
  7. "'M'M'd'd'y'yyhh:mm:ss");

9、QString -->Char*

  1. Qstring 转换char*问题!
  2. 方法一:
  3. QString qstr("hello,word");
  4. const char * p = qstr.toLocal8Bit().data();
  5. 方法二:
  6. const char *p = qstr.toStdString().data();
  7. //转换过来的是常量
  8. 方法三:
  9. QString str="abc";
  10. char *ch;
  11. QByteArray ba = str.toLatin1()
  12. ch = ba.data();

或者

QString tmp = "test";
 QByteArray text = tmp.toLocal8Bit();
 char *data = new char[text.size() + 1]
 strcpy(data, text.data());
 delete [] data;

Qt类型转换的更多相关文章

  1. QT类型转换(九种转换)

    1.char * 与 const char *的转换 char *ch1="hello11";const char *ch2="hello22";ch2 = c ...

  2. 从Qt谈到C++(一):关键字explicit与隐式类型转换

    转载:果冻虾仁 提出疑问 当我们新建了一个Qt的widgets应用工程时.会自动生成一个框架,包含了几个文件. 其中有个mainwindow.h的头文件.就是你要操纵的UI主界面了.我们看看其中的一段 ...

  3. Qt中的强制类型转换

    在C++开发中经常要进行数据类型的强制转换. 刚开始学习的时候,直接对基本数据类型强制类型转换,如float fnum = 3.14; int num = (int)fnum; 随着C++标准的发展, ...

  4. QT之类型转换

    Qt在进行数据类型转换时,容易忘记如何使用,或者是早已厌倦了百度QString转QByteArray,QByteArray转char,QString转string....... 现在分享一篇QT数据类 ...

  5. Qt 中C++ static_cast 和 reinterpret_cast的区别(static_cast是隐式类型转换,会有数据损失,reinterpret_cast是底层二进制转换,没有数据损失)

    1.C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作.因此,被做为隐式类型转换使用.比如: int i; float f = 166.7f; i = static_cast ...

  6. Qt中的对象类型转换(Qstring 转换char*有三种方法)

    char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = c ...

  7. Qt数据类型转换

    把QString转换为double类型 方法1.QString str="123.45"; double val=str.toDouble(); //val=123.45 方法2. ...

  8. Qt中的对象类型转换

    char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = c ...

  9. QT/C++ 类型转换

    "轻轻地我走了,正如我轻轻地来,我挥一挥衣袖,不带走一片云彩"------阿魔 1) int转为QString: QString::number(int) 2) std::stri ...

随机推荐

  1. mysql分组取每组前几条记录(排名)

    1.创建表 create table tb( name varchar(10), val int, memo varchar(20) ); 2.插入数据 insert into tb values(' ...

  2. 枢轴点(Pivot Point)系统

    Pivot Point是日内交易方法,非常简单实用,是一套非常“单纯”的阻力支持体系,大概是10年前一个做期货的高手发明的方法,至今已经广泛的用在股票.期货.国债.指数等高成交量的商品上.经典的Piv ...

  3. HTML布局--使用<div>元素

    div元素是用于分组HTML元素的块级元素 上图代码示例如下: <!DOCTYPE html> <html lang="en"> <head> ...

  4. 安装三大浏览器驱动driver

    1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list 2.Firefox的驱动geckodriver 下载 ...

  5. HDOJ 2203 亲和串 【KMP】

    HDOJ 2203 亲和串 [KMP] Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  6. 2018 ACM 国际大学生程序设计竞赛上海大都会 F - Color it (扫描线)

    题意:一个N*M的矩形,每个点初始都是白色的,有Q次操作,每次操作将以(x,y)为圆心,r为半径的区域涂成黑点.求最后剩余白色点数. 分析:对每行,将Q次操作在该行的涂色视作一段区间,那么该行最后的白 ...

  7. java 怎么让打印信息换行?

    System.out.println("账号=="+name+"\n"); System.out.println("密码=="+pwd+&q ...

  8. LeetCode: Find Largest Value in Each Tree Row

    BFS /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...

  9. Spring 之高级装配

    [环境与Profile] 暂略 [条件化的bean] 暂略 [处理自动装配歧义性] 暂略 [ bean 的作用域] 在 @Componen . @Bean 下以及 XML 中的声明方式如下所示, @C ...

  10. awk分割列-【AWK学习之旅】

    ---===AWK学习之旅===--- awk 内置分割函数:split,将列按照指定分割符,分割成数组 用法:split(str1,array,"分隔符") 文件内容: [roo ...