QT常用转换

将QString 字符串写入文件时,通常会借用QByteArray作为中间变量,以下三种方法都能将QString换为QByteArray:
QString::toUtf8是输出UTF-8编码的字符集(向下兼容ASSIC码,存储方式为:字符/1字节,汉字/3字节)
QString::toLatin1是相当与ASCii码(不包含中文),遇到中文默认转换为ascii码0x3f也就是字符’?‘
QString::Local8bit是本地操作系统设置的字符集编码,一般为GB2312.

0. QT指定编码格式,支持中文

//.pro文件中引入以下代码
#指定编码格式
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8

1. Qstring 转 char*

//Qstring 转 char*=====1.Qstring转QByteArray 2.QByteArray内容复制
QString chuankouhao =  ui->chuankouhao->currentText();
QString portName1 ="\\\\.\\"+chuankouhao;
QByteArray ba2;
ba2.append(portName1);    
char * c2 = ba2.data();

//或者
memcpy(c2, ba.data(), length);

 2. Qstring 互转 string

QString qstr = "test";
string str;
str = qstr.toStdString();
qstr = QString::fromStdString(str);

3.  unsigned char 转 QString 

unsigned char	curChannel = 0x01;
QString temp,temp2;
//unsigned char是无符号字符,代表的范围为0-255,转QString要通过int来牵线
temp = QString("%1").arg((int)curChannel);
temp2 = QString("%1").arg((int)curChannel,2,16,QLatin1Char('0')); //16进制显示

//数组形式(该方法显示有点问题,推荐用"循环+append"执行上面的方式)
unsigned char words[] = "HELLO WORLD";
QString str = reinterpret_cast(words);
qDebug() << str;

4.QString 转char 

char fname[1024];
QString	fileName;

strcpy(fname, fileName.toStdString().c_str());

你可能感兴趣的:(Qt,qt)