范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

从零开始学Qt(29)字符串QString类的常用功能

  QString是Qt编程中常用的类,除了用作数字量的输入输出之外,QString还有很多其他功能, 熟悉这些常见的功能,有助于灵活地实现字符串处理功能。
  QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算作是一个字符。字符串转换为数值
  QString类从字符串转换为整数的函数有:int toInt(bool *ok = Q_NULLPTR, int base = 10) const long toLong(bool *ok = Q_NULLPTR, int base = 10) const short toShort(bool *ok = Q_NULLPTR, int base = 10) const uint toUInt(bool *ok = Q_NULLPTR, int base = 10) const ulong toULong(bool *ok = Q__NULLPTR, int base = 10) const
  这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数;若指定整数基参数,还可以直接将二进制、十六进制字符串转换为整数。
  QString将字符串转换为浮点数的函数有:double toDouble(bool *ok = Q_NULLPTR) const float toFloat(bool *ok = Q_NULLPTR) const数值转换为字符串
  可以使用QString的静态函数number()和asprintf(),也可以使用其公共函数setNum()和sprintf()。
  QString的sprintf()函数与C语言里的sprintf()函数的格式是一样的,而setNum()和number()函数使用另外一种格式定义,而且setNum和number有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制,例如将一个整数直接转换为十六进制或二进制字符串。
  如果对于一个浮点数db,希望显示两位小数,下面4行语句都可以实现这个功能。QString str; str=QString::number(db,’f’,2); str=QString::asprintf("%.2f ", db); str=str.setNum(db, ‘f’, 2); str=str.sprintf("%.2f",db);进制转换
  将一个整数转换为不同进制的字符串,可以使用QString的函数setNum()和number(),它们的函数原型是:QString &setNum (int n, int base = 10) QString number (int n, int base = 10)
  其中n是待转换的整数,base是使用的进制,缺省为十进制,也可以指定为十六进制和二进制。下面是读取二进制字符串,然后转换为十进制和十六进制的代码。QString str = ui->editBin->text(); //读取二进制字符串 bool ok; int val = str.toInt(&ok, 2); //以二进制数读入 str = QString::number(val,10); //数字转换为十进制字符串 str = str.setNum(val, 16); // 数值转化为十六进制 str = str.toUpper();字符串添加
  append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:QString strl="卖", str2="拐"; QString str3=strl; strl.append(str2); // str1="卖拐" str3.prepend(str2); // str3="拐卖"大小写转换
  toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形 式,如:QString strl="Hello, World", str2; str2=strl.toUpper(); // strl="HELLO, WORLD" str2=strl.toLower(); // strl="hello, world"字符串大小
  count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个个汉字算一个字符。QString strl="NI好"; N=strl.count(); // N=3 N=strl.size(); // N=3 N=strl.length(); // N=3去除空格
  trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。QString strl=" Are you OK? ", str2; str2=strl.trimmed(); //strl=" Are you OK?" str2=strl.simplified(); //strl="Are you OK?"查找子字符串位置
  indexOf()函数的原型为:int indexOf(const QString &str, int from=0, Qt::CaseSensitivity cs = Qt::CaseSensitive} const
  其功能是在自身字符串内査找参数字符串str出现的位置,参数from是开始査找的位置,Qt::CaseSensitivity cs参数指定是否区分大小写。
  lastIndexOf()函数则是查找某个字符串最后出现的位置。QString strl="G:Qt5BookQT5.9Studyqw.cpp"; N=strl.indexOf("5.9"); // N=13 N=strl.lastlndexOf(""); // N=21
  ""是转义字符,如果要查找需要输入""。判断是否为空字符串
  isNull()和isEmpty()两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有"", isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNull()才返回true。QString strl, str2=""; N=strl.isNull(); // N=true 未赋值字符串变量 N=str2.isNull(); // N=false 只有""的字符串,也不是Null N=str1.isEmpty(); // N=true N=str2.isEmpty(); // N=true
  QString只要赋值,就在字符串的末尾自动加上"",所以,如果只是要判断字符串内容是否为空,常用isEmpty()。判断是否包含
  contains()判断字符串内是否包含某个字符串,可指定是否区分大小写。QString strl="G: Qt5BookQT5.9Studyqw.cpp"; N=strl.contains (".cpp", Qt::CaseInsensitive); // N=true,不区分大小写 N=strl.contains (".CPP", Qt::CaseSensitive); // // N=false,区分大小写判断开头结尾
  startsWith()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。QString strl="G:Qt5BookQT5.9Studyqw.cpp"; N=strl.endsWith(".cpp", Qt::Caselnsensitive); // N=true,不区分大小写 N=strl.endsWith(".CPP", Qt::CaseSensitive); // N=false,区分大小写 N=strl.startsWith("g: "); // N=true, 缺省为不区分大小写截取字符串
  left()表示从字符串中取左边多少个字符,right()表示从字符串中取右边多少个字符。注意, 一个汉字被当作一个字符。QString str2, strl="学生姓名,男,1984-3-4,汉族,山东"; N=strl.indexOf (","); // N=4, 第一个","出现的位置 str2=strl.left(N); //str2="学生姓名" N=strl.lastIndexOf (","); // N=18 最后一个逗号的位置 str2=strl.right(strl.size()-N-l); // str2="山东",提取最后一个逗号之后的字符串
  section()函数的原型为:QString section(const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const
  其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。QString str2, strl="学生姓名,男,1984-3-4,汉族,山东"; str2=str1.section(",",0,0); // str2="学生姓名" str2=str1.section(",",1,1); // str2="男" str2=str1.section(",",0,1); // str2="学生姓名,男"

印军参谋长尽管8万吨超级航母下水,但中国还落后印度数十年在中国的8万吨超级航母福建舰下水之际,印度欧亚时报采访了印度军事专家普拉卡什,这位印度军事专家说,目前中国还缺乏航母应用的经验,还在全力追赶印度在航母应用领域的经验。前印度海军副参印度网友热议用布拉莫斯导弹打击福建号,我国航母能防御吗?我国福建号航母下水后,印度网友显然是酸透了,纷纷拿出事实抨击福建号,有的说印度服役过3艘航母,比中国至少领先10年有的说在莫拉莫斯导弹面前,福建舰不值得一提,这是因为布拉莫斯导弹能中国最魔幻的千年古刹,泰国印度都比不过,居然就在北京在很多人的印象中,寺庙是个清静的地晨钟暮鼓禅意幽幽,岁月静好无论多心烦意乱,只要踏进这片净土,仿佛心就能到了一方安宁。但中国的寺庙千千万,总有那么些香火特别旺的,也总有那么一个异类印度的野心财经封面和越南相对被动承接外部产业机会不同,印度对这个世界有更多想法图视觉中国文财经记者柳书琪陈伊凡顾翎羽编辑谢丽容位于印度首都新德里的英迪拉甘地机场正在从疫情中苏醒。过去三个月间,每天平丹东袭警,为何弄成双输?还是北方的兄弟城市够意思,唐山被架在火上烤,郑州马上来解围,郑州红了,丹东抓紧接过热搜。与两位大哥相比,丹东小弟这不算大事,如只看警方通报还以为只是一起妨碍警察执行公务的小案件,视出过轨的人,还会真心回归家庭吗?2个男人说了大实话陈奕迅在红玫瑰中唱道得不到的永远在骚动,被偏爱的都有恃无恐。对有些人来说,婚姻,有时候,更像是一座围城。困在围城中的他们,或是厌倦生活的琐碎,或是贪图一时的新鲜,或是找新的寄托,而为什么有那么多人会把宠物当家人?我听到的最好的答案一个网友说以前家里养了只可卡犬,某天我和老公吵架,它站在我身边冲我老公狂吠,那一刻我心里真的很暖。后来它一直陪我看电视,我对它说我很郁闷,然后它去书房在我老公脚下拉了泡屎。一个网友我,90后越南姑娘,不顾家人反对,嫁给大13岁二婚山东穷小子这是我们讲述的第504位真人的故事我是范氏香越南媳妇阿香,1995年出生在越南宁平省,今年27岁,高中毕业,出生在一个普通农村家庭,家里有爸爸妈妈还有两个弟弟。2016年经姐妹介绍恭喜黑龙江308分喜提本科,安徽文科狂降39分,重庆狂降52分高考各省市分数线陆续出炉,快看看你的分数咋样?6月23日已出炉分数线全国乙卷区黑龙江2022分数线出炉一本文科463分理科429分二本文科365分理科308分!一本文科463分较2瓜迪奥拉携家人,在加勒比海巴巴多斯享受假期直播吧6月24日讯曼城主帅瓜迪奥拉目前携夫人以及孩子,在加勒比海的巴巴多斯享受假期。据悉,有媒体拍到了瓜迪奥拉与家人在海岸休闲阳光浴以及冲浪的画面。一位旁观者透露,瓜迪奥拉在此期间随队记者快船并不打算交易三分射手肯纳德直播吧6月24日讯据洛杉矶时报记者AndrewGreif报道,多位消息源透露,快船并没有打算交易走三分射手肯纳德。据此前快船将在选秀大会(上午8点)之前兜售肯纳德。如果交易没能达成
几家欢喜几家愁!世界杯男乒告急2人已出局,女乒强势仅1人输球伴随着陈梦31战胜陈幸同晋级半决赛,乒乓球WTT世界杯8进4的比赛已经全部结束。从结果看,可谓几家欢喜几家愁。女乒5人参赛,仅1人输球出局,她们不仅仅提前包揽了冠亚军,还顺带包揽了国乒今晚单打决战!孙颖莎再遇陈梦力争卫冕,王楚钦迎来终极考验2022年10月30日,乒乓球世界杯决赛继续在新乡进行,进入收官日仅安排两场决赛,产生男单和女单项目的冠军,国乒三位队员出战,男单王楚钦对阵张本智和,女单孙颖莎对阵陈梦,谁能笑到最全美热搜!球迷呼吁交易詹姆斯!但规则限定,本赛季湖人无法交易昨天,湖人苦吞开局5连败,这是詹姆斯自2003年新秀赛季以来的最惨开局。NBA历史上,还没有球队在4连败开局后赢得总冠军,更别说这5连败了。湖人上一次0胜5负开局是201415赛季马龙34再输王楚钦,看台噪声影响发挥,王楚钦怒视无良球迷北京时间的10月29日,在WTT世界杯的赛场上,中国球员贡献了非常精彩的较量,虽然在女单半决赛中两场比赛的比分并不是特别的激烈,但是观看过赛事的球迷对比赛的观赏性大加赞赏,王曼昱虽丁俊晖42强势晋级北京时间10月30日消息,2022斯诺克英格兰公开赛资格赛继续进行。一场焦点比赛中,中国名将鲁宁以42战胜詹姆斯卡希尔,强势晋级。稍早前,中国一哥丁俊晖轰出三杆破百和一杆50,40贝克汉姆长子晒27岁爱妻赤身照,庆祝相识三年,没你活不下去当地时间10月29日,妮可拉佩尔茨在社交媒体上分享了一组照片,庆祝她和丈夫布鲁克林贝克汉姆相识3周年。我每天都更爱你一些。我很幸运有你当我的丈夫,现年27岁的好莱坞女演员在照片旁如内马尔狂舞奔袭30米单挑7人!180度回旋直塞,惊为天人什么样的足球,才是桑巴风味?10月29日的法甲第13轮,巴黎圣日耳曼43险胜特鲁瓦,内马尔就展现了桑巴舞步。1球1助攻,还有1次惊为天人的盘带,内马尔告诉全世界足球王国的现役头号巨文班亚马轰23分10板5帽!官网直播排面拉满,美媒晒选秀实时排名北京时间10月30日,文班亚马在最新一场比赛中出战37分钟,得到23分10篮板5盖帽2助攻,投篮12中7,罚球10中9,帮助大都会92队以9591加时击败JLBourg队,目前球队社保缴费最低年限要上调从15年提高至25年?三种人要提前补救我们都知道,现在的社保缴费最低年限是15年,也就是说缴够了15年的社保,企业女性工人达到50岁女性干部(及灵活就业的女性)达到55岁男性一律达到60岁,就可以办理退休,享受养老金了康宁汉姆23109斯图尔特2413活塞擒勇士终结5连败NBA常规赛10月31日继续进行,本场比赛克莱汤普森缺阵。最终,活塞以128114战胜勇士,活塞终结了自己的5连败!首节开始,活塞97稍稍领先后普尔独得5分率队打出一波124反超比正式走人!富兰克林已与上海解约,三双王黯然退场,无望重返CBA4投1中得到2分1板3助攻正负值为1。富兰克林用一场效率极低的比赛,正式的谢幕了本赛季的CBA。今天欧洲篮球名记EmilianoCarchia的爆料,富兰克林已经与上海男篮完成了解