• Qt,C++中QString,string,char数组等常用格式转换大总结


    摘要

    在平时C++编写过程中,经常用到string类型与char类型,在Qt中显示数据等经常用到QString类型,因此在编写过程中经常需要格式转换,在这里对常用的字符,字符串类型转换做一个总结。

    定义基本类型及变量

    先定义好常用的数据类型与变量

    int number = 100;
    QByteArray byteLongArray;
    QByteArray byteShortArray("01 02");  //QByteArray初始化
    unsigned char uchValue = 50;
    unsigned char uchBits = '100';
    char chLongArray[100] = {0};
    char chValueArray[5] = {12,12,34,45,55};
    char chBitsArray[5] = {'12','12','34','45','55'};
    QString qstringLong = "02 03 04 01";
    QString astringShort = "30";
    std::string stringLong = "01 03 04 05";
    std::string stringShort = "50";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    转换过程

    1.string转char*,这样只能转化为const类型

    const char *pch = stringLong.c_str();
    
    • 1

    2.string转char[ ]

      //这里要按照自己的格式要求,修改输出格式
      for(int i =0;i<stringLong.length();i++)
      {
          chLongArray[i] = stringLong[i];
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.string转int

    number = atoi(stringShort.c_str());
    
    • 1

    4.QString转int

    number = astringShort.toInt();
    
    • 1

    5.QString转unsigned char

    bool ok;
    uchValue = qstringShort.toInt(&ok,10);
    
    • 1
    • 2

    6.QString转char*

    //下面步骤不能一步完成
    QString qStr = "192.168.1.1";
    QByteArray byteArray = qStr.toUtf8();
    char *ip = byteArray.data();
    
    • 1
    • 2
    • 3
    • 4

    7.QString转QByteArray

    byteLongArray = qstringLong.toLatin1();
    
    • 1

    8.int转string

    //这里是将数值100转成字符串"100";
    stringShort = to_string(number);
    
    //若是数值0x100,数值是16进制,照原样转换成字符串"100",而不是先把0x100变成十进制再转换,用下面的方法;
    sprintf_s(stringShort,sizeof(stringShort),"%x",number);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    9.char*,char[ ]转string

    //这样直接转换,如果char里是数值型,会先转换成ASCII字符,再转成string
    stingLong = chValueArray;
    
    //若要把数值型char直接转成数值型字符串显示,先把每个数值转换成字符
    //string的合并用的是+,若是想中间空一格,比如22,33,44变成"22 33 44"
    //自定义函数,第二个参数是char数组元素个数
    std::string charArray2String(char *srcArray,const int charArrayNum)
    {
      std::string strTemp = "";
      std::string temp1="";//数值中间是空格
      for(int i = 0;i<charArrayNum;i++)
      {
          temp1 = to_string(srcArray[i])+" ";
          strTemp += temp1;
      }
      return strTemp;
    }
    stringLong = charArray2String(chValueArray,3);
    
    //若要把十六进制数值型char直接转成数值型字符串显示,先把每个数值转换成字符
    //string的合并用的是+,若是想中间空一格,比如0x22,0x33,0x44变成"22 33 44"
    //自定义函数,第二个参数是char数组元素个数
    //修改windows底层提供的to_string函数,更改成to_stringHex
    inline string to_stringHex(int _Val)
    {
       char _Buf[2*_MAX_INT_DIG];
       _CSTD _TOSTRING(_Buf,"%x",_Val);
       return(string(_Buf));
    }
    
    std::string charHexArray2String(char *srcArray,const int charArrayNum)
    {
      std::string strTemp = "";
      std::string temp1="";//数值中间是空格
      for(int i = 0;i<charArrayNum;i++)
      {
          temp1 = to_stringHex(srcArray[i])+" ";
          strTemp += temp1;
      }
      return strTemp;
    }
    char chValueArray[3] = {0x22,0x33,0x44};
    stringLong = charHexArray2String(chValueArray,3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    10.QString转string

    stringLong = qstingLong.toStdString();
    
    • 1

    11.string转QString

    qstringShort = QString::fromStdString(stringShort);
    
    • 1

    10.QByteArray转QString

    qstringLong = QString(byteShortArray);
    
    • 1

    12.char*,char[ ]转QString

    qstringLong = QString(QLatin1String(chBitsArray));
    
    • 1

    13.unsigned char转QString

    //100是数值,会先将100转成16进制,再转化为字符串"64";
    qstringShort = QString::number(uchValue,16);
    
    //100是数值,会先将100转成10进制,再转化为字符串"100";
    qstringShort = QString::number(uchValue,10);
    
    //100是单个字符'100',会将'100'按照ASCII值转成字符串"48";
    qstringShort = QString::number(uchBits,10);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    14.int转QString

    //数值100,按照十进制不变,转换成了字符串"100";
    qstringShort = QString::number(number);
    
    • 1
    • 2

    15.QString转const char *

    QString str = "nihao";
    const char *chStr = str.toStdString().c_str();
    
    • 1
    • 2
  • 相关阅读:
    安装Git
    Mac硬件设备系统环境的升级/更新 macOS
    shell脚本下用plot给iostat和CPU的采样画图的写法
    k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount
    使用nginx部署多个前端项目
    1.3 Redis五大数据类型
    Matlab进阶绘图第29期—三角热图
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java焦作旅游网站q5msq
    MySQL的级联操作
    Js逆向教程20-Hook基础
  • 原文地址:https://blog.csdn.net/qq_43376782/article/details/127767988