注意:本文翻译自  http://developer.qt.nokia.com   中的  UsingQStringEffectively   ,中文译文见  简体中文版 ,如果你对翻译wiki感兴趣,请参考Wiki中文帮助 本文解释了QString相关的各个类的用途. QLatin1String:避免操作符 "==" 中隐含的 malloc 从C字符串创建一个QString可能会涉及到malloc.举例来说,下面的代码可能会有一个隐式malloc调用的代价. if (fruit ==…
注意:本文翻译自  http://developer.qt.nokia.com   中的  UsingQStringEffectively   ,中文译文见  简体中文版 ,如果你对翻译wiki感兴趣,请参考Wiki中文帮助 本文解释了QString相关的各个类的用途. QLatin1String:避免操作符 "==" 中隐含的 malloc 从C字符串创建一个QString可能会涉及到malloc.举例来说,下面的代码可能会有一个隐式malloc调用的代价. if (fruit ==…
单独封装QtCore 一直以来使用QT的特性使用惯了,很多东西QT都封装得很好.如果突然有一天,不使用QT开发了,是不是不习惯. 比如我们经常使用QString很多方法,string,wstring之间的转换,arg格式化. 又比如Qt提供的Json相关使用. 如果我们把QT这些方法抽取出来,单独封装.能在其它非QT项目中,能够正常使用会不会很好呢. 其实QString,QJson,QfileInfo等,都封装在QtCore中.  这里,我截了部分图,相关还有很多可到文档中查看. 抽取QtCor…
QString::QString 中文乱码 处理方法: 1. QString str = QString::fromLocal8Bit("中文"); // vs2008 vs2005 2. QString str = QString::fromLocal8Bit("中文"); //  gcc vs2003, 如源码是 GBK 编码(记事本中的 ANSI 编码) 3.QString str = QString::fromUtf8("中文");  …
1.浅拷贝 浅拷贝-引用类型.浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同),对其中任何一个对象的改动都会影响另外一个对象. 2.深拷贝 而深拷贝-值类型.深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响. 3.隐式共享: 隐式共享又叫做回写复制.当两个对象共享同一份数据时(通过浅拷贝实现数据块的共享),如果数据不改变,不进行数据的复制.而当某个对象需要改变数据时则执行深拷贝. 采用隐式共享技术,将深拷贝和浅拷贝有机地结合起来. Q…
一个月前尝试写了一篇关于QStringLiteral,存盘时MoinMoin罢工了.吸取一点经验,还是写成短篇吧 可是,可是,QString不就是简简单单一个字符串么?能有什么可谈的.真的么... (本文范围:Qt4) 字符串比较 如果翻看Qt的源码,或者Qt的(正规一点)第三方库,我们很少看到这种代码: //QString myString if (myString == "dbzhang800") { } 取而代之的是 if (myString == QLatin1String(&…
QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. 一.初始化QString字符串 1)Char * 初始化 QString str = "Hello"; QString converts the const char * data into Unicode using the fromAscii() function. 2)QChar[]数组…
这一篇文章讨论QT框架中QT字符串是如何实现高效拼接的. 1. QStringBuilder实例与原理 QT字符串高效拼接例子 备注: (a)上述代码仅仅在s2 = b1时一次性分配能够容纳所有字符串的内存. (b)定义两个符号之一即可使用operator+实现高效字符串拼接. QT_USE_FAST_OPERATOR_PLUS QT_USE_QSTRINGBUILDER QStringBuilder原理 QStringBuilder提升字符串拼接性能的原理是什么? (1)QStringBuil…
  QString 为字符串操作提供了各种成员比如mid().left().right().它们都创建会一个新的字符串,因此有一个对在已存在QString的malloc和深拷贝. 与此相反,QString::midRef().QString::leftRef()与QString::rightRef()可以用来获取一个QStringRef.QStringRef 是对QString一部分的一个引用.为了优化,QString 也提供了许多重载比如 QString::operator==(const Q…
Qt下面,字符串都用QString,确实给开发者提供了方便.Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型 Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型 因为char*最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’ 方法如下: 1.QString转char *先将QString转换为QByteArray,再将QByteArray转换为char *…