QT学习——day3

QT学习——day3

字符串的动态拼接:

QSrting类的构造函数,arg()函数的重载,qDebug实现在终端输出。

 QString str=QString("(%1)有(%2)个徒弟,分别是(%3),(%4)").arg("贺子奇").arg("2").arg("大明").arg("二明");
 qDebug()<<"这就是我的徒弟:"<

输出结果为:这就是我的徒弟:“(贺子奇)有(2)个徒弟,分别是(大明),(二明)”

字符串的长度

QString中长度是字符个数,一个汉字算一个字符

QByteArray中长度是字符串占用的字节数,一个汉子3个字节

QString a;

a.length();//返回字符串的长度。

QVarianat类

重载实现字符串及各类数字、字符的加减与拼接;

  QVariant str1;
    QVariant str2=dataPlus("hzq","love");
    int a;
    a=dataPlus(10,20).toInt();
    str1=a;
    qDebug()<
QVariant Mywidget::dataPlus(QVariant a, QVariant b)
{
    QVariant ret;
    if(a.type()==QVariant::Int&&b.type()==QVariant::Int)
    {
        ret=QVariant(a.toInt()+b.toInt());
    }
    else if(a.type()==QVariant::String&&b.type()==QVariant::String)
    {
        ret.setValue(a.toString()+b.toString());
    }
    return ret;
}

#include 
#include
using namespace std;
class CExample {
public:
    int g=8;
    float h=8.8;
    //构造函数初始化列表
    CExample()
    {
        cout<

C++之vector的理解

#include 
#include 

和string一样,也算是一种容器,而且同属于STL(standard template library)里的好基友

1.初始化向量

        vector a ;                                //声明一个int型向量a
        vector a(10) ;                            //声明一个初始大小为10的向量
        vector a(10, 1) ;                         //声明一个初始大小为10且初始值都为1的向量
        vector b(a) ;                             //声明并用向量a初始化向量b
        vector b(a.begin(), a.begin()+3) ;        //将a向量中从第0个到第2个(共3个)作为向量b的初始值

也可以用数组来初始化向量

        int n[] = {1, 2, 3, 4, 5} ;
        vector a(n, n+5) ;              //将数组n的前5个元素作为向量a的初值
        vector a(&n[1], &n[4]) ;        //将n[1] - n[4]范围内的元素作为向量a的初值

2.向量元素的输出和访问

普通的

[复制代码](javascript:void(0)

 1     #include
 2     #include
 3 
 4     using namespace std ;
 5 
 6     int main()
 7     {
 8         vector a(10, 0) ;      //大小为10初值为0的向量a
 9 
10         //对其中部分元素进行输入
11         cin >>a[2] ;
12         cin >>a[5] ;
13         cin >>a[6] ;
14 
15         //全部输出
16         int i ;
17         for(i=0; i

[复制代码](javascript:void(0)

在输出上,还可以使用迭代器,类似城管一样,一个一个不漏地弄出来vector里面的元素

比如在这种申明形式下

vector  a(b.begin(),b.begin()+3);

中,可以使用城管iterator

    //全部输出
    vector::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;

3.向量的基本操作

[复制代码](javascript:void(0)

    1>. a.size()                 //获取向量中的元素个数


    2>. a.empty()                //判断向量是否为空


    3>. a.clear()                //清空向量中的元素


    4>. 复制
        a = b ;            //将b向量复制到a向量中


    5>. 比较
        保持 ==、!=、>、>=、<、<= 的惯有含义 ;
        如: a == b ;    //a向量与b向量比较, 相等则返回1


    6>. 插入 - insert
        ①、 a.insert(a.begin(), 1000);            //将1000插入到向量a的起始位置前
        
        ②、 a.insert(a.begin(), 3, 1000) ;        //将1000分别插入到向量元素位置的0-2处(共3个元素)
        
        ③、 vector a(5, 1) ;
            vector b(10) ;
            b.insert(b.begin(), a.begin(), a.end()) ;        //将a.begin(), a.end()之间的全部元素插入到b.begin()前


    7>. 删除 - erase
        ①、 b.erase(b.begin()) ;                     //将起始位置的元素删除
        ②、 b.erase(b.begin(), b.begin()+3) ;        //将(b.begin(), b.begin()+3)之间的元素删除


    8>. 交换 - swap
        b.swap(a) ;            //a向量与b向量进行交换

[复制代码](javascript:void(0)

4.二维向量

vector< vector > b(10, vector(5));        //创建一个10*5的int型二维向量

输入输出的方式

[复制代码](javascript:void(0)

 8         vector< vector > b(10, vector(5, 0)) ;
 9 
10         //对部分数据进行输入
11         cin>>b[1][1] ;
12         cin>>b[2][2] ;
13         cin>>b[3][3];
14 
15         //全部输出
16         int m, n ;
17         for(m=0; m

for(m=0; m 18 {
19 for(n=0; n 20 cout< 21 cout<<"\n" ;
22 }
23


你可能感兴趣的:(c++,qt,qt5)