QString向char* 、string转化

在使用QT时,经常会进行QString、const char*、string之间的相互转化。我通常的做法是使用QString的成员函数完成向string、char*的转化,如:

1 //qstr为QString类型
2
3 string str=qstr.toStdString();
4 char* pch=qstr.toStdString().c_str();

但是,在不同的机器上,上述代码可能会导致程序崩溃。究其原因,是由于QString的toStdString()函数的不稳定所致。所以尽量不要使用toStdString()进行QString向string的转化。网上的方法有很多,我懒得一一总结(怪不得一直没进步),只介绍一个我常用的方法(还是这么任性):

//qstr为QString类型

string str=string((const char*)qstr.toLocal8Bit());
const char* cpch1=(const char*)qstr.toLocal8Bit();
const char* cpch2=(const char*)qstr.toLatin1().data();
时间: 2024-10-10 09:44:45

QString向char* 、string转化的相关文章

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*呢,需要用到

Qt下 QString转char*

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

Qt下 QString转char*(转)

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

QString转换为char* (转)

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

QString与char*的相互转换

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

QString转换为char*

QString在Qt里相当于C++里的std::string,或者是C里的c style string.不过,QString跟编码相关,在低层想把一个QString发送出去相当麻烦,尤其对方用的不是Qt的时候,必须先转化为char数组. QString转换为char数组,基本就是先将QString转换为QByteArray,再从QByteArray取得char *指针,就可以得到char类型的数据了.需要注意的是QString的编码. 假如为UTF8编码,则QString str("中国人&qu

Qt QString转char*

一.QString str; char *ch; QByteArray ba = str.toLatin1(); ch = ba.data(); 二.将QString转换为标准库string类型,然后将string转为char * QString name; std::string cstr = name.toStdString(); consr char *ch = str.c_str();

QString unsigned char* 的转换

QString -> unsigned char* : QString str = "ABCD";  int length = str.length(); unsigned char* sequence = NULL;sequence =(unsigned char*)qstrdup(str.toAscii().constData()); delete[] sequence; - sequence length = 5 --> ['A'] ['B'] ['C'] ['D']