QVector 显示动态数组里面的元素用QString和char *的转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenaini119/article/details/39961881

QVector类是一个提供动态数组的模板类。

QVector<T>是Qt普通容器类的一种。它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。QList<T>、QLinkedList<T>和 QVarLengthArray<T>也提供了相似的功能,它们使用方法如下:

l QList一般用得最多,它能满足我们绝大部分需求。像prepend()和insert()这样的操作通常比QVector要快些,这是由于QList存储它的对象的方式(Algorithmic Complexity)不同。还有它基于索引的API比QLinkedList的基于迭代器的API更方便使用。最后,执行程序时它的代码扩展量更少些。

QLinkedList,当你需要使用一个真正的链表,要求在恒定的时间内将对象插入到列表的中间,你更想用迭代器而不是索引号来访问对象,这个时候就使用QLinkedList吧!

QVector,如果你想要在连续的内存上存储你的对象,你的对象比指针还要大,你想避免单独地把对象插入到堆的头部时,使用QVector

QVarLengthArray,如果你想要一个低层次的可变大小的容器,QVarLengthArray就足够了,它的优点是速度快!

 

下面是使用QVector存放整型值和QString的例子:

QVector<int> integerVector;

QVector<QString> stringVector;

 

QVector保存对象的向量容器,通常是使用初始大小来创建向量容器。举例,下面的代码构造了一个拥有200个元素的QVector:

QVector<QString> vector(200);

如果所创建的向量容器对象没有赋初值,就会被使用这个向量容器的类的默认构造函数进行初始化。基本类型和指针类型都会被初始化为0,如果想使用其它的初值来初始化对象时,可以在初始化时再添加一个参数:

QVector<QString> vector(200,"Pass");

你也可以调用fill()函数在任何时候填充向量容器。

 

但是当你要显示里面的具体字符串的时候

在Qt开发中,QString通过toAscii().data()转换为char *类型

QByteArray QString::toAscii () const

Returns an 8-bit representation of the string as a QByteArray.

If a codec has been set using QTextCodec::setCodecForCStrings(), it is used to convert Unicode to 8-bit char; otherwise this function does the same as toLatin1().

Note that, despite the name, this function does not necessarily return an US-ASCII (ANSI X3.4-1986) string and its result may not be US-ASCII compatible.

如果使用setCodecForCStrings函数设置过编码的话,toAscii会把Unicode转换为8位的char类型,否则与toLatin1相同。

 

没有更多推荐了,返回首页