zoukankan      html  css  js  c++  java
  • 关于C++中字符串与数字的互相转换

    方法搬自博客:  Qt数据类型转换  侵删

    1. 把QString转换为double类型

    //法一:
    QString str="123.45";
    double val=str.toDouble();     //val=123.45
    
    //法2: 很适合科学计数法形式转换
    bool ok;
    double d;
    d=QString("1234.56e-02").toDouble(&ok);     //ok=true;d=12.3456.


    2. 把QString转换为float形

    法1:
    QString str="123.45";
    float d=str.toFloat();     //d=123.45
    
    法2:
    QString str="R2D2";
    bool ok;
    float d=str.toFloat(&ok);     //转换是被时返回0.0,ok=false;        


    3. 把QString形转换为整形
      1.转换为十进制整形
      注意:基数默认为10。当基数为10时,并且基数必须在2到36之间。如果基数为0,若字符串是以0x开头的就会转换为16进制,若以0开头就转换为八进制,否则就转换为十进制。

    Qstring str="FF";
    bool ok;
    int dec=str.toInt(&ok,10); //dec=255 ; ok=rue
    int hex =str.toInt(&ok,16); //hex=255;ok=true;


    4. 常整形转换为Qstring形

    long a =63;
    QString str=QString::number(a,16); //str="3f";
    QString str=QString::number(a,16).toUpper(); //str="3F";

    5. Qstring 转换char*问题!

    //方法一:
    QString qstr("hello,word");
    const char * p = qstr.toLocal8Bit().data();
    
    //方法二:
    const char *p = qstr.toStdString().data();

    6. 把当前时间转化为QString

    public QDateTime qdate = QDateTime.currentDateTime();
    datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss");
    //如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QString类
    QString Time2String( DWORD dwTime)
    {
    char cTime[50] = {0};
    memset(cTime,0,50);
    strftime(cTime,32,"%Y-%m-%d %H:%M:%S",localtime(&time_t(dwTime)));
    return QString(cTime);
    }

    7. QString转换为char* 

    QString str1 = "Test";
    QByteArray ba = str1.toLatin1();
    const char *c_str2 = ba.data();
    printf("str2: %s", c_str2);

     

    8. char* 转 QString:

    char port[10]="COM3";
    QString szPort =QString(port);

    9. int 转 QString :

    int index=1;
    QString szId =QString::number(index); 
    
    //或者可以使用setNum函数. 
    QString str;
    str.setNum(1243);            //str=="1234"

    10. float/double 转 QString :

    float fSpeed =3.2;
    QString szSpeed =QString::number(fSpeed,'f',2 );//szSpeed的内容为"3.20"
    //此处注意一下这个函数:
    QString QString::number ( double n, char f = 'g', int prec = 6 ) [静态]
    
    这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
    根据fmt指定的格式,参数n被格式化,g为默认情况并且可以为下列之一:
    
    e - 格式化为[-]9.9e[+|-]999
    E - 格式化为[-]9.9E[+|-]999
    f - 格式化为[-]9.9
    g - 使用e或f格式,看哪一个更简练
    G - 使用E或f格式,看哪一个更简练
    在所有的情况下,小数点之后数字的个数等于prec指定的精度。

    则double科学计数法转QString可以使用number或setNum. 这两个函数使用方法不一样

    QString str;
    str.setNum(111.111, 'E', 2);
    
    //或使用number
    QString str = QString::number(111.111, 'E', 2);

    11. 多个变量 到 QString:

    char port[10]="COM2";
    intbaudrate =9600;
    QString szFailed =QString("Open %1 baudrate %2 failed!").arg(port).arg(baudrate);

    12. 中文 到 QString:

    QString szOpened =QString::fromLoacal8Bit("打开串口");


    13. 中文和变量组合 到 QString:

    char port[10]="COM2";
    intbaudrate =9600;
    QString szFailed =QString::fromLoacal8Bit("打开串口%1, 波特率%2").arg(port).arg(baudrate);

    14. char * 与 const char *的转换

    char *ch1="hello11";
    const char *ch2="hello22";
    ch2 = ch1;//不报错,但有警告
    ch1 = (char *)ch2;

    15. char 转换为 QString

    char a='b';
    QString str;
    str=QString(a);

    16. QString 转换为 char

    QString str="abc";
    char *ch;
    ch = str.toLatin1.data();

    17. QByteArray 转换为 char *

    char *ch;//不要定义成ch[n];
    QByteArray byte;
    ch = byte.data();

    18. char * 转换为 QByteArray

    char *ch;
    QByteArray byte;
    byte = QByteArray(ch);

    19. QString 转换为 QByteArray

    QByteArray byte;
    QString string;
    byte = string.toAscii();

    20. QByteArray 转换为 QString

    QByteArray byte;
    QString string;
    string = QString(byte);


    21. int 转 QString

    int a=10;
    QString b;
    b=QString::number(a)

    22. QString 转int

    QString a="120"
    int b;
    b=a.toInt()
  • 相关阅读:
    部分数据文件损坏的修复处理示例.sql
    使用UPDATE进行编号重排的处理示例.sql
    DNS Prefetching 技术引入及实现方法
    查找指定节点的所有子节点的示例函数.sql
    特殊的交叉报表处理示例.sql
    定时备份FTP+Mysql到云服务器
    cPanel下安装GodaddySSL教程
    移动节点处理的通用存储过程.sql
    应用程序角色使用示例.sql
    文件及文件组备份与还原示例.sql
  • 原文地址:https://www.cnblogs.com/haoyijing/p/6425023.html
Copyright © 2011-2022 走看看