Qt之QString

  • Post author:
  • Post category:其他


组包

QString s;

s= QString(“a = %1;b= %2;b= %3”).arg(250)

.arg(“hello”)

.arg(22.22);

qDebug()<<s;

输出:

“a = 250;b= hello;b= 22.22”







字符串

按关键字符串进行分隔,并取其中的几段

QString s;

s= “aaa, bbb, ccc, ddd”;

QString tmp =s.section(“,”,0,2);

qDebug()<<“tmp = “<<tmp;

输出:tmp = “aaa, bbb, ccc”





转Int

QString s;

s =“250”;

int a = s.toInt();

qDebug()<<“a = “<<a;

输出:a = 250

#Int转QString

tmp = QString(”%1”).arg(123);

qDebug()<<“tmp=”<<tmp;

//输出结果:tmp=“123”

//int转QString函数方式转

tmp = QString::number(234);





将GB2312/GBK字符串转化为QString

/******************************************************

函数名:

功能:将GB2312/GBK字符串转化为QString

输入:字符串:GB2312Chars,如

GB2312Chars[0] = 0x31,

GB2312Chars[1] = 0x32,

GB2312Chars[2] = 0x33,

GB2312Chars[3] = 0x00,

输出:QString str(“123”)

*******************************************************/

void ToolFunc::GB2312CharsToQString(INT8U *GB2312Chars, QString &str)

{


str = QString::fromLocal8Bit((INT8S *)(GB2312Chars));

}





GBK,双字节汉字,字符串转换为QString

//\其中GB2312Chars必须以0结束

//例:输入:

输出:

void ToolFunc::GB2312Chars_ConstToQString(const INT8U *GB2312Chars, QString &str)

{


str = QString::fromLocal8Bit((INT8S *)(GB2312Chars));

}





QString 转换为字符串,其中汉字可能占用3个字节,

//MaxLen用于提示字符串长度,注 MaxLen不包括最后的0x00,所以UnicoodChars有实际长度是MaxLen+1.

INT32S ToolFunc::QStringToUnicodeChars(QString str, INT8U *UnicoodChars, INT32S MaxLen)

{


QByteArray tmp = str.toLocal8Bit();;

int count = tmp.count();

//qDebug()<<“QByteArray count = “<<count;

//qDebug()<<tmp;

if(count>MaxLen)

{


count = MaxLen;

}

if(count<0)

{


count = 0;

}

int i ;

for(i = 0;i<count;i++)

{


UnicoodChars[i] = tmp[i];

}

UnicoodChars[i] = 0;

return count;

}





将UnicoodChars字符串,转换为QString

//功能:将UnicoodChars字符串,转换为QString

//输入:UnicoodChars若是汉字,则占用3个字节,英文点有1个字节。UnicoodChars最后必须是0;

void ToolFunc::UnicodeCharsToQString(INT8U *UnicoodChars, QString &str)

{


str = QString::fromUtf8((char *)UnicoodChars);

}





计算QString转为GB2312后的字节长度

/******************************************************

函数名:

功能:计算QString转为GB2312后的字节长度,不含最后的0x00

目的是为了知道Qt控制输入的内容长度(1个汉字占2个字节)

输入:字符串

输出:长度(0~255)

*******************************************************/

INT32U ToolFunc::QStringToGB2312Length(QString str)

{


QTextCodec

utf8 = QTextCodec::codecForName(“UTF-8”);

QTextCodec::setCodecForLocale(utf8);

QTextCodec

gbk = QTextCodec::codecForName(“gbk”);

QString strUnicode= utf8->toUnicode(str.toLocal8Bit().data());

QByteArray gb_bytes= gbk->fromUnicode(strUnicode);

//qDebug()<<gb_bytes;//得到汉字由两个字母组成

return gb_bytes.size();

}





QString转char *

QString ss = "hello ab汉c";
//如果没有中文:
QByteArray tmp = ss.toLatin1();
char * buf3 = tmp.data();
QString temp = buf3;
qDebug()<<temp;
//如果有中文:
tmp = ss.toLocal8Bit();
char * buf4 = tmp.data();
temp = buf4;
qDebug()<<temp;

输出:

“hello ab?c”

“hello ab??c”

注:没有输出中文

int num = 1;

QString(“%1”).arg(num,2, 10, QChar(‘0’));

输出:01

字符串内双引号”





INT8 * 数组转QString

INT8U TT[15];//“你好12”

str = QString::fromLocal8Bit( (char *)TT);

str显示内容为你好12″





QString 限制字节个数





QString 禁上左右输入 空格





QS 车牌号输入方法


(557条消息) Qt之QString_涛···的博客-CSDN博客_qstring几个字节