QString 和 char* 之间的转换(以及QByteArray)
来源:互联网 发布:psvita 电池 淘宝 编辑:程序博客网 时间:2024/04/30 08:04
1.QString转char *
方法1:
先将QString转换为QByteArray,再将QByteArray转换为char *。注意:不能用下面的转换形式char *mm = str.toLatin1().data();。因为这样的话,str.toLatin1()得到的QByteArray类型结果就不能保存,最后转换,mm的值就为空。
QString str = “hello”; //QString转char * QByteArray ba = str.toLatin1(); char *mm = ba.data();
补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char*就是乱码,采用如下方法解决:
添加GBK编码支持,使用函数toLocal8Bit ( ),
#include <QTextCodec>//QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));//然后改变上面的第2行为:QByteArray ba = str.toLocal8Bit();
方法2:
先将QString转为标准库中的string类型(StdString),然后将string转为char*,如下:
std::string str = filename.toStdString();const char* ch = str.c_str();
此方法不支持中文!
2. char * 转QString
方法1:
QString(const char *ch);
方法2:
QString::fromLocal8Bit(chr, sizeof(chr));QString::fromLatin1( chr, sizeof(chr));
方法3:
可以使用QString的构造函数进行转换:
QString(const QLatin1String &str);
QLatin1String的构造函数:
QLatin1String(const char *str);
则如下语句是将char * mm转换为QString str:
QString str = QString(QLatin1String(mm));
方法4:
转为QByteArray,再转QString.3.QByteArray
char* 转 QByteArray:QByteArray ba(chr, sizeof(chr));
4.例子:
//#include "myclass.h" #include <QtGui/QApplication> #include <QtDebug> #include <QString> int main(int argc, char *argv[]) { QApplication a(argc, argv); QString str = “hello”; //QString转char * QByteArray ba = str.toLatin1(); char *mm = ba.data(); qDebug()<<mm<<endl; //调试时,在console中输出 QString nn = QString(QLatin1String(mm)); //char *转QString qDebug()<<nn<<endl; //调试时,在console中输出 //MyClass w; //w.show(); return a.exec(); }/*******************************************QString和QByteArray提供了非常便利的operator+,以允许你写这样的代码:QString directory = /*...*/, name = /*...*/;QString dataFile = directory + QLatin1Char('/') + name + QLatin1String(".dat");**********************************************/
0 0
- QString 和 char* 之间的转换(以及QByteArray)
- char* QByteArray 和 QString之间的转换
- QT:QString、QByteArray和char *的转换
- QT:QString、QByteArray和char *的转换
- QT:QString、QByteArray和char *的转换
- QT:QString、QByteArray和char *的转换
- QT:QString、QByteArray和char *的转换。
- QString,QByteArray和QBitArray之间的转换(原创)
- Qt中QString,char,int,QByteArray之间的转换
- QT---QString,int,char,QByteArray之间的转换
- Qstring,char,int,QByteArray之间到转换
- QString Char* QByteArray转换
- QString Char* QByteArray转换
- Qstring ,char*,QByteArray转换
- 【转载】QString,QByteArray和QBitArray之间的转换
- Qt中的QString和QByteArray之间转换
- Qt类型转换 QString,int,char,QByteArray之间相互转换
- QByteArray与QString之间的转换
- Python进行时:一个简单的神经网络实现及代码详解
- 深入理解Java中的重写和重载
- 游戏产业高速发展
- 备用——欢迎使用CSDN-markdown编辑器
- Python之反转字符串
- QString 和 char* 之间的转换(以及QByteArray)
- SSM框架搭建(Spring+SpringMVC+MyBatis)与easyui集成并实现增删改查实现
- 对servlet的简单了解
- HDFS-DataNode
- STL源码剖析之数值算法<numeric.h>
- struts2配置文件中的主要元素
- 客户端与服务器的连接问题
- Remove Nth Node From End of List问题及解法
- 在Windows 下使用CodeBlocks 自带编译器实现对编译的优化