QVector<QString> 显示器里面的动态数组元素QString和char *转变

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相同。

原文地址:https://www.cnblogs.com/zfyouxi/p/5042951.html