zoukankan      html  css  js  c++  java
  • Qt中字符串和数值之间的转换

    来自《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);
    

      

  • 相关阅读:
    数据库
    Python基础
    flask 文件的上传下载和excel操作
    Django 知识点补充
    Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议
    Memcached 补充
    websocket基本概念
    Tornado 异步非阻塞
    Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架
    functools 和 itertools
  • 原文地址:https://www.cnblogs.com/XiaoXiaoShuai-/p/10771793.html
Copyright © 2011-2022 走看看