永发信息网

char c=sc.nextchar()这句话有意义吗

答案:1  悬赏:40  手机版
解决时间 2021-11-25 04:10
char c=sc.nextchar()这句话有意义吗
最佳答案
char*转换

Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换
Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型
在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。
因为char*最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’
方法如下:
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();
ch=ba.data();
这样就完成了QString向char*的转化。经测试程序运行时不会出现bug
注意第三行,一定要加上,不可以str.toLatin1().data()这样一部完成,可能会出错。

补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char*就是乱码,采用如下方法解决:
方法1:
添加GBK编码支持:
#include
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后改变上面的第三行为:QByteArray ba = str.toLoacl8Bit(); toLoacl8Bit支持中文
方法2:
先将QString转为标准库中的string类型,然后将string转为char*,如下:
std::string str = filename.toStdString();
const char* ch = str.c_str();
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
信用卡透支5W,还2年,利息要多少
海城腾鳌爱欣旅馆地址好找么,我有些事要过去
魔域7级军团有几个荣誉元老和议员
我在公司干满7年合同一到期、公司让我辞职、
鑫源驾校(泉州鲤城区)地址好找么,我有些事要
有多少人用着苹果,华为,但是又有多少人拥有
嫁一个离过二次婚的男人会幸福吗?
天津驾道网络科技有限公司怎么样?
大神们求nell渐行渐远的中文音译歌词!不要韩
求教如何脱掉女帝的裙子和衣服
4.172和4.17哪个大
形容奸臣的句子
南通如皋3,4百年银杏树多少棵
鑫鑫汽贸服务有限公司地址在什么地方,我要处
武汉到恩施白果乡该怎么坐长途汽车?
推荐资讯
新买的烧烤铁签,用什么刷刷好
我一贯主张喝白开水用英语怎么说
昨天更新了最新版的火狐之后,频繁出现未响应
六乘以几括号小于35
与悲欢离合阴晴圆缺类似的词语
寿光二手车市场地址有知道的么?有点事想过去
关于flash下载
我就在自称现金贷的平台,提供资料没借钱,结果
下面是一个工具箱,下半部分是一个长40厘米,
请问363公里,开车用时1小时50分钟,那么每小
兵藤一诚和谁表白了
营运车非法上下客怎么处理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?