史上最全数据类型转换(Qt\C++\C)

  1 #include <QCoreApplication>
  2 
  3 #include <iostream>
  4 using namespace std;
  5 
  6 QString qstr1 = "qyanjiachen";
  7 QString qstr2 = "1234";
  8 
  9 
 10 
 11 std::string str1 = "yanjiachen";
 12 std::string str2 = "1234";
 13 
 14 
 15 int int1 = 1234;
 16 int int2 = 0x123;
 17 
 18 
 19 char ch1 = 'a';
 20 char ch2[] = "abcd";
 21 
 22 
 23 
 24 int main(int argc, char *argv[])
 25 {
 26     QCoreApplication a(argc, argv);
 27     printf("%s",str1.c_str()); //printf后的字符串要求为对象的首地址
 28     //取一个数字的高8位和低8位
 29     int value = 515;
 30     int mainVersion = (value & 0xFFFF) >> 8;
 31     int minorVersion = value & 0xFF;
 32     cout<<mainVersion;
 33 
 34     //QString转String
 35     QString qstr6;
 36     string str12 = qstr6.toStdString();
 37 
 38     //String转QString
 39     string str11;
 40     QString qstr7 = QString::fromStdString(str11);
 41 
 42     //QString转char*--------方法一,使用string
 43     QString qstr1 = "qyanjiachen";
 44     std:string str=qstr1.toStdString();
 45     const char* ch=str.c_str();
 46 
 47         //string转char*,包含3中方法:1,2,3
 48         string str0 = "hello worls";
 49         const char *p = str.data();//1
 50         const char *p2 =str.c_str();//2:若不加 const,编译时会报错:无法从 "const char*" 转换为 "char*";
 51         char buf[50];
 52         str.copy(buf,5,0);
 53         *(buf+5)='\0';//需要手动加结束符
 54 
 55     //QString转char*--------方法二,使用QByteArray
 56     QString qstr2;
 57     QByteArray ba=qstr2.toLatin1();
 58     char *cstr=ba.data();
 59 
 60     //char*转QString
 61     char *ch1="mmm";
 62     QString qstr = QString(QLatin1String(ch1));
 63 
 64     //char*转string,可直接赋值
 65     char *p1="hello";
 66     string str1=p;
 67 
 68     //string转char[],区别就是结尾差一个'\0'
 69     string str2="hello";
 70     char ch3[10];
 71     int i=0;
 72     for(i=0;i<str2.size();++i)
 73     {
 74         ch3[i]=str2[i];
 75     }
 76     ch3[i]='\0';
 77 
 78     //char[]转string
 79     char ch4[60]="hello";
 80     string str5=ch4;
 81 
 82     //char转string,有三种方法
 83     char ch7 ='l';//1
 84     string str7(1,ch7);//2,
 85     string str8;
 86     str8.push_back(ch7);
 87 
 88 
 89     //int 转QString,double转QString
 90     int int1 = 1234;
 91     double dou=63.23;
 92     QString qstr5=QString("%1").arg("%1").arg(dou);
 93 
 94     QString qstr3=QString::number(int1);//(int1,16)表示换算成16进制
 95 
 96     //QString 转int,转double
 97     QString qstr4="1234";
 98     int j=qstr4.toInt();
 99     double dou2=qstr4.toDouble();
100 
101     //Char与QChar互转
102     QChar qch1='v';
103     char ch6=qch1.toLatin1();
104     qch1=QChar(ch6);
105 
106     //char*转char
107     char *ss="abcdefghijklmn";
108     char  ch9[100];
109     strcpy(ch9,ss);
110 
111     //char转char*
112     char ch8[]="abcdefghijklmn";
113     char *s = ch8;
114 
115     //QByteArray转char*
116     char * ch10 ="aaaaaaaasds";
117     QByteArray ba2;
118     ch10 = ba.data();
119 
120     //char*转QByteArray
121     char *ch11;
122     QByteArray ba3 = QByteArray(ch11);
123 
124     //int转string
125     int m=9;
126     string str15 = "" + m;
127 
128     //string转int
129     int k= atoi(str.c_str());//atof(float或是double)),atol(转long)
130     return a.exec();
131 }

 关于QString用qDebug()打印总是带双引号

转成const char 就好啦

 

posted @ 2021-06-20 21:37  我们都不是哈士奇  阅读(152)  评论(0)    收藏  举报