组包
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 车牌号输入方法