永发信息网

char*s;s={"Olympic"};这种定义方法为什么不对??

答案:2  悬赏:70  手机版
解决时间 2021-04-26 07:13
char*s;s={"Olympic"};这种定义方法为什么不对??
最佳答案
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();
全部回答
s是地址,你不能拿字符串给地址赋值啊!追答你可以这样s="olympic"
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么样才能让自己改掉一些不良习惯?
告诉我今年夏季 饰品是什么?
高粮山地址有知道的么?有点事想过去
关于孙子兵法的诗句,孙子兵法写的名人名言列
重庆二手塔吊出售
那個高中 好、?
推荐好听的一点的伤感一点的英文歌?
为什么TXT的小说只有一半,没完整的?
为什么黄宏、潘长江在春晚上比不过赵本山。
个人所得税用什么科目,什么是“所得税费用”
领航电脑在哪里啊,我有事要去这个地方
这两个哪个是yy10频道的IP
怎么用手机上QQ农场能得到奖品
怎么设置个人说明
100捏100羽化的三百级三职业法师加点方法
推荐资讯
明天骑士能打杀勇士吗?
使用QQ拼音可以加速QQ的级数升级?真的假的?
男生怎样打拌的韩流化
黄字的名字是什么意思
不懂创业可以开美容院吗
关于钱是万能经典语录,征求朋友们妙语 说一些
DNF江苏3区什么时候能转区啊
没有什么为什么的嘛?
我开通的超级QQ业务,业务显示我已经订购,手
伪装者绕口令台词文字,伪装者的绕口令台词在
碧洲公园在哪里啊,我有事要去这个地方
为什么我家的战地2叛逆连保存不了只要一大退
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?