首页 > 代码库 > QVector<QString> 显示动态数组里面的元素用QString和char *的转换
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更方便使用。最后,执行程序时它的代码扩展量更少些。
l QLinkedList,当你需要使用一个真正的链表,要求在恒定的时间内将对象插入到列表的中间,你更想用迭代器而不是索引号来访问对象,这个时候就使用QLinkedList吧!
l QVector,如果你想要在连续的内存上存储你的对象,你的对象比指针还要大,你想避免单独地把对象插入到堆的头部时,使用QVector。
l 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相同。
QVector<QString> 显示动态数组里面的元素用QString和char *的转换