来自《Qt5.9 C++开发指南》

普通数值和字符串之间的转换

一、从字符串转换为数值

QString类从字符串转换为整数的函数有:

int QString::toInt(bool *ok = Q_NULLPTR, int base = 10) const
long QString::toLong(bool *ok = Q_NULLPTR, int base = 10) const
short QString::toShort(bool *ok = Q_NULLPTR, int base = 10) const
uint QString::toUInt(bool *ok = Q_NULLPTR, int base = 10) const
ulong QString::toULong(bool *ok = Q_NULLPTR, int base = 10) const

  这些函数如果不设置参数,缺省表示从十进制表示的字符串转换为整数,若指定整数基参数,还可以直接将二进制、十六进制字符串转换为整数。

QString将字符串转换为浮点数的函数有:

float QString::toFloat(bool *ok = Q_NULLPTR) const
double QString::toDouble(bool *ok = Q_NULLPTR) const

使用方法如下:

    QString str("12");
int num = str.toInt();

  

二、将数值转换为字符串

可以使用QString的静态函数number()和asprintf(),也可以使用其公共函数setNum()和sprintf()。QString的sprinf()函数与C语言里的sprintf()函数的格式时一样的,而setNum()和number()函数使用另外一种格式定义,而且setNum和number有多个重载函数定义,可以处理各种类型的整数和浮点数,在处理整数时还可以指定进制,例如将一个整数直接转换为十六进制或二进制字符串。

static函数asprintf()原型(没有重载)

QString asprintf(const char *cformat, ...)

  

static函数number()原型及其重载

QString number(long n, int base = 10)
QString number(uint n, int base = 10)
QString number(int n, int base = 10)
QString number(ulong n, int base = 10)
QString number(qlonglong n, int base = 10)
QString number(qulonglong n, int base = 10)
//第一个参数表示所想要转换的double类型数据(就算实际参数不是double类型,形参会将其赋值为double类型)
//第二个参数和第三个参数分别表示格式和精度
QString number(double n, char format = 'g', int precision = 6)

public函数sprintf原型(没有重载)(ps:该函数已过时,官方强烈建议不要使用)

QString & sprintf(const char *cformat, ...)

public函数setNum()原型及其重载 

QString & setNum(int n, int base = 10)
QString & setNum(ushort n, int base = 10)
QString & setNum(short n, int base = 10)
QString & setNum(uint n, int base = 10)
QString & setNum(long n, int base = 10)
QString & setNum(ulong n, int base = 10)
QString & setNum(qlonglong n, int base = 10)
QString & setNum(qulonglong n, int base = 10)
QString & setNum(float n, char format = 'g', int precision = 6)
QString & setNum(double n, char format = 'g', int precision = 6)  

最后举一个关于这四个函数的例子

    float num = 1.5151;
QString str;
//以下四个语句的结果都一样,str最终变为"1.52"
//str = QString::asprintf("%.2f",num);
//str = QString::number(num,'f',2);
//str = str.setNum(num,'f',2);
str = str.sprintf("%.2f",num);

  

Qt中字符串和数值之间的转换的更多相关文章

  1. Python中字符串/字典/json之间的转换

    import json #定义一个字典d1,字典是无序的 d1 = { "a": None, "b": False, "c": True, ...

  2. C/C++中字符串与数字之间的转换

    主要有两种方式:C 中能够使用 sprintf 将数字转为字符数组,sscanf 将字符数组转为数字:而在 C++ 中不仅能够使用 C 中的方法,还能够使用 stringstream 实现字符串与数字 ...

  3. matlab学习笔记10_6 字符串与数值间的转换以及进制之间的转换

    一起来学matlab-matlab学习笔记10 10_6 字符串与数值间的转换以及进制之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合 ...

  4. 小tips:JS数值之间的转换,JS中最大的Number是多少?,JS == 与 === 的区别

    JS数值之间的转换 Number(), parseInt(),parseFloat() Number()函数的转换规则如下: 1.如果boolean值,true和false将分别被转换为1和02.如果 ...

  5. C#字符串和数据之间的转换

    c#中不仅仅存在数值类型的数据之间的转换,字符串和数值之间也是可以互相转换的,只是方法不同而已. 1 数值型转换为字符型 数值型数据转换为字符串用ToString()方法即可实现 int num1=1 ...

  6. js中字符串转换为数值的两种方法的区别

    在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt()   //将字符串转换为整型 parseFloat()  //将字符串转换为浮点型 转换函数在 ...

  7. java中Integer 和String 之间的转换

    java中Integer 和String 之间的转换 将数组转换成字符串:char[] array = {'a','b','c','d','e'};String str = new String(ar ...

  8. python中unicode, hex, bin之间的转换

    python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个d ...

  9. string和数值之间的转换

    string和数值之间的转换 to_string(val) 一组重载函数,返回数值val的string表示val可以是任何算数类型. stoi(s,p,b),stol(s,p,b),stoul(s,p ...

随机推荐

  1. 【转】c#中数组赋值方法

    C#中数组复制有多种方法,数组间的复制 ,,,};int [] alias = pins; 这里出了错误,也是错误的根源,以上代码并没有出错,但是根本不是复制,因为pins和alias都是引用,存在于 ...

  2. Go Web 编程之 请求

    概述 前面我们学习了处理器和处理器函数,如何编写和注册处理器.本文我们将学习如何从请求中获取信息. 请求的结构 通过前面的学习,我们知道处理器函数需要符合下面的签名: func (w http.Res ...

  3. vue将接口返回的日期实时转换为几分钟前、几小时前、几天前

    项目开发中,各种需求都会遇到,有些需求很合理,也好实现,有些需求不能说不合理,就是太麻烦,就比如类似标题所描述这种的需求,你不能说它是不合理的需求,因为很多论坛或微博.朋友圈.QQ空间之类的这种效果还 ...

  4. Sentinel :微服务哨兵

    1. Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. Sentin ...

  5. OpenStack Identity API v3

    Table Of Contents OpenStack Identity API v3 What’s New in Version 3.7 What’s New in Version 3.6 What ...

  6. 关于revit的外部扩展存储

    最近被revit的外部扩展存储搞得死去活来,作为日后再次使用的预防针,此处随手留下印记,以作警示. 首先我们知道外部扩展存储ExtensibleStorage是revit提供给revit二次开发人员用 ...

  7. NTT 求原根

    使用NTT需要保证模数mod 为质数. 通过以下代码求得一个模数的原根 , 常见的质数的原根  998244353 -> 3    1e9+7 -> 5 #include<bits/ ...

  8. SpringSecurity 初始化流程源码

    SpringSecurity 初始化流程源码 本篇主要讲解 SpringSecurity初始化流程的源码部分,包括核心的 springSecurityFilterChain 是如何创建的,以及在介绍哪 ...

  9. Docker学习(一)环境准备安装centos7

    前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容器是完全使用沙箱机 ...

  10. Nginx作为负载均衡——实战演练

    配置语法 Syntax:upstream name {...} Default:—— Context:http 演示 准备两台虚拟主机192.168.96.188.192.168.96.188 在18 ...