常见的数据类型之间的转换--Qt

前言

在项目中,经常用到一些基本数据类型之间的转换,而记性越发不好的今天,只能每次都去请教度娘,这就很不好。故在此做一些总结,方便查阅。

 

介绍

在写此文章时,查了一些资料,然后发现数据类型之间的转换,也包含有一些之前没注意过的细节,感觉颇有收获。

 

int 转char*

此类型之间的转换,主要用到了两个方法 itoasprintfitoa并不是一个标准的c函数,它是windows特有的(在Linux下的 stdlib.h 库,其中没有 itoa 函数),故建议用sprintf ,在Qt跨平台时,就不需修改。下面对这两个方法进行详细的介绍。

itoa(int value,char* buffer,radix),此函数有三个参数,value需转换整型,buffer目标字符串,radix数字转换的基数。

    char sz_id[256];
    int id=obj.value("id").toInt();
    itoa(id,sz_id,10);
    int id=17;
    char sz_id[256];
    sprintf(sz_id,"%d",id);

 

QString 转char*

此类型在转换时,要格外注意中文的转换,必须将其转化为utf8编码,不然则会乱码。如下:

    QString str=QString::fromLocal8Bit("你好");
    QByteArray byte=str.toUtf8();
    char* data=byte.data();

 

char* 转QString

  直接转换即可。

    char* data="hello";
    QString str(data);

 

QString转字符数组char[]

  此类型转换要使用

char *strcpy(char* dest, const char *src)

把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间,注意srcdest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

    char data[10];
    QString str("hello");
    strcpy(data,str.toLocal8Bit().data());

结束语

很多时候,我们总是关注整体,而不在乎细节,但是要记住,大船总是在阴沟里翻船,我们不要在洗脸盆里淹死。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值