QT5中QString与char *的相互转换

以例子说明:

#include <QApplication>
#include <QDebug>
#include <QString>
#include <QByteArray>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    char abc[20];
    memset(abc, 0, sizeof(abc));

    QString str("hello world.");
    QByteArray arr;
    arr = str.toUtf8();

    memcpy(abc, arr.data(), strlen(arr.data()));

    qDebug() << abc;
  
    QString temp = QString::fromUtf8(abc);//将char*转换为QString

    qDebug() << temp;

    return a.exec();
}

结果输出:

hello world.
"hello world."
时间: 2024-10-14 17:41:16

QT5中QString与char *的相互转换的相关文章

QString与char*的相互转换

在进行编程时,我们经常需要用到字符串这种类型,毫无疑问,Qt 库中也对字符串类型进行了封装,QString 类提供了你能想到的所有字符串操作方法,给开发者带来了极大方便. 但是我们在编写程序时,不可避免地会在 Qt 框架上使用第三方的开源库,由于库的类型基本上都是标准的类型,即使用 char * 来表示字符串类型.那么问题来了,QString 和 char * 之间如何进行转换呢? 下面分两种情况进行说明. 一.QString 转换为 char * 将 QString 转 char *,需要用到

Qt中QString,int,char,QByteArray之间相互转换

http://blog.csdn.net/ymc0329/article/details/7284514 int  转 QString int m=1; QString b; b=QString::number(m) QString 转int QString a="1111" int b; b=a.toInt() char 转换为 QString char a='b'; QString str; str=QString(a); QString 转换为 char QString str=

Qt中Qstring,char,int,QByteArray之间到转换(转)

11.各种数据类型的相互转换char * 与 const char *的转换char *ch1="hello11";const char *ch2="hello22";ch2 = ch1;//不报错,但有警告ch1 = (char *)ch2; char 转换为 QString其实方法有很多中,我用的是:char a='b';QString str;str=QString(a); QString 转换为 char方法也用很多中QString str="ab

C++中 int char 的相互转换

特别注意char 只能处理单个字符如,1,2,3到9等,不能接收11,11等多位数字 // 取到一个char的ASCII值 char c='A'; int i=c; printf("%d",i); //值为数字的char转为对应数字 char c1='3'; int c1int=c1-'0'; //int转为char型 int i2=4; char c2=i2+'0'; printf("%c",c2); 一个数(而不是一个数字) 如何转为char str[]呢? 代

Qt中 QString 和int, char等的“相互”转换,关键是QString.toLocal8Bit().data();

Qt中 int ,float ,double转换为QString 有两种方法 1.使用 QString::number(); 如: long a = 63; QString s = QString::number(a, 10); // s == "63" QString t = QString::number(a, 16).toUpper(); // t == "3F" long a = 63; QString s = QString::number(a, 10);

Qt5中的QtGui

我在学习Qt查看Qt Creater提供的例子时,遇到了一个小问题.就是明明在代码中包含了QtGui,然而编译的时候还是提示找不到QLabel的定义,以及其他一些类的定义,但是这是官方提供的文档的啊,不应该没通过编译就提供吧,所以就想肯定是自己哪里出了问题,在网上搜了一下果然,归根到底还是版本问题吧,提供的文档估计是版本qt4的,而我自己使用的是qt5,它两个之间的一个区别就是Qt5把关于控件的头文件都移到 <QtWidgets>中了,所以如果在 Qt5 中使用控件应该包含 <QtWid

Qt5 中对 C++11 一些新特性的封装

在 Qt5 中,提供更多 C++11 的特性支持,接下来我们将进行详细的说明. slots (槽) 的 Lambda 表达式 Lambda表达式 是 C++11 中的一个新语法,允许定义匿名函数.匿名函数可用于使用小函数作为参数,而无需显式的进行声明.之前可以通过编写函数指针来达到同样的目的. 在 Qt 4.8 中已经可在一些 QtConcurrent 函数中使用 Lambda 表达式了.但在 Qt5 中甚至可以通过 new connect syntax 来将 Lambda 表达式作为 slot

Qt下QString转char*

Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换 Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型 在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档. 因为char*最后都有一个'/0'作为结束符,而采用QString::toLatin1()时会在字符串后面加上'/0' 方法如下: Qs

zz Qt下 QString转char*和char []

以下内容为转载:http://www.cnblogs.com/Romi/archive/2012/03/12/2392478.html ----------------------------------- Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换 Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型 在Qt下怎样将QString转char*呢,需要用到