C++/Qt/QString

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Complete demo for QString

<source lang="cpp"> /****************************************************************************

    • Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    • All rights reserved.
    • Contact: Nokia Corporation (qt-info@nokia.com)
    • This file is part of the documentation of the Qt Toolkit.
    • $QT_BEGIN_LICENSE:LGPL$
    • Commercial Usage
    • Licensees holding valid Qt Commercial licenses may use this file in
    • accordance with the Qt Commercial License Agreement provided with the
    • Software or, alternatively, in accordance with the terms contained in
    • a written agreement between you and Nokia.
    • GNU Lesser General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU Lesser
    • General Public License version 2.1 as published by the Free Software
    • Foundation and appearing in the file LICENSE.LGPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU Lesser General Public License version 2.1 requirements
    • will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    • In addition, as a special exception, Nokia gives you certain additional
    • rights. These rights are described in the Nokia Qt LGPL Exception
    • version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    • GNU General Public License Usage
    • Alternatively, this file may be used under the terms of the GNU
    • General Public License version 3.0 as published by the Free Software
    • Foundation and appearing in the file LICENSE.GPL included in the
    • packaging of this file. Please review the following information to
    • ensure the GNU General Public License version 3.0 requirements will be
    • met: http://www.gnu.org/copyleft/gpl.html.
    • If you have questions regarding the use of this file, please contact
    • Nokia at qt-info@nokia.com.
    • $QT_END_LICENSE$
                                                                                                                                                        • /
  1. include <QtGui>
  2. include <QApplication>
  3. include <stdio.h>

class Widget : public QWidget { public:

   Widget(QWidget *parent = 0);
   void constCharPointer();
   void constCharArray();
   void characterReference();
   void atFunction();
   void stringLiteral();
   void modify();
   void index();
   QString boolToString(bool b);
   void nullVsEmpty();
   void appendFunction();
   void argFunction();
   void chopFunction();
   void compareFunction();
   void compareSensitiveFunction();
   void containsFunction();
   void countFunction();
   void dataFunction();
   void endsWithFunction();
   void fillFunction();
   void fromRawDataFunction();
   void indexOfFunction();
   void firstIndexOfFunction();
   void insertFunction();
   void isNullFunction();
   void isEmptyFunction();
   void lastIndexOfFunction();
   void leftFunction();
   void leftJustifiedFunction();
   void leftRefFunction();
   void midFunction();
   void midRefFunction();
   void numberFunction();
   void prependFunction();
   void removeFunction();
   void replaceFunction();
   void reserveFunction();
   void resizeFunction();
   void rightFunction();
   void rightJustifiedFunction();
   void rightRefFunction();
   void sectionFunction();
   void setNumFunction();
   void simplifiedFunction();
   void sizeFunction();
   void splitFunction();
   void splitCaseSensitiveFunction();
   void sprintfFunction();
   void startsWithFunction();
   void toDoubleFunction();
   void toFloatFunction();
   void toIntFunction();
   void toLongFunction();
   void toLongLongFunction();
   void toLowerFunction();
   void toShortFunction();
   void toUIntFunction();
   void toULongFunction();
   void toULongLongFunction();
   void toUShortFunction();
   void toUpperFunction();
   void trimmedFunction();
   void truncateFunction();
   void plusEqualOperator();
   void arrayOperator();

}; Widget::Widget(QWidget *parent)

   : QWidget(parent)

{ } void Widget::constCharPointer() {

   QString str = "Hello";

} void Widget::constCharArray() {

   static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 };
   QString str(data, 4);

} void Widget::characterReference() {

   QString str;
   str.resize(4);
   str[0] = QChar("U");
   str[1] = QChar("n");
   str[2] = QChar(0x10e3);
   str[3] = QChar(0x03a3);

} void Widget::atFunction() {

   QString str;
   for (int i = 0; i < str.size(); ++i) {
       if (str.at(i) >= QChar("a") && str.at(i) <= QChar("f"))
           qDebug() << "Found character in range [a-f]";
   }

} void Widget::stringLiteral() {

   QString str;
   if (str == "auto" || str == "extern"
           || str == "static" || str == "register") {
       // ...
   }

} void Widget::modify() {

   QString str = "and";
   str.prepend("rock ");     // str == "rock and"
   str.append(" roll");        // str == "rock and roll"
   str.replace(5, 3, "&");   // str == "rock & roll"

} void Widget::index() {

   QString str = "We must be bold, very bold";
   int j = 0;
   while ((j = str.indexOf("", j)) != -1) {
       qDebug() << "Found <b> tag at index position" << j;
       ++j;
   }

}

   QString Widget::boolToString(bool b)
   {
       QString result;
       if (b)
           result = "True";
       else
           result = "False";
       return result;
   }

void Widget::nullVsEmpty() {

   QString().isNull();               // returns true
   QString().isEmpty();              // returns true
   QString("").isNull();             // returns false
   QString("").isEmpty();            // returns true
   QString("abc").isNull();          // returns false
   QString("abc").isEmpty();         // returns false

} void Widget::appendFunction() {

   QString x = "free";
   QString y = "dom";
   x.append(y);
   // x == "freedom"
   x.insert(x.size(), y);

} void Widget::argFunction() {

   QString i;           // current file"s number
   QString total;       // number of files to process
   QString fileName;    // current file"s name
   QString status = QString("Processing file %1 of %2: %3")
                   .arg(i).arg(total).arg(fileName);


   QString str;
   str = "%1 %2";
   str.arg("%1f", "Hello");        // returns "%1f Hello"
   str.arg("%1f").arg("Hello");    // returns "Hellof %2"
   str = QString("Decimal 63 is %1 in hexadecimal")
           .arg(63, 0, 16);
   // str == "Decimal 63 is 3f in hexadecimal"
   QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
   str = QString("%1 %L2 %L3")
           .arg(12345)
           .arg(12345)
           .arg(12345, 0, 16);
   // str == "12345 12,345 3039"

} void Widget::chopFunction() {

   QString str("LOGOUT\r\n");
   str.chop(2);
   // str == "LOGOUT"

} void Widget::compareFunction() {

   int x = QString::compare("auto", "auto");   // x == 0
   int y = QString::compare("auto", "car");    // y < 0
   int z = QString::compare("car", "auto");    // z > 0

} void Widget::compareSensitiveFunction() {

   int x = QString::compare("aUtO", "AuTo", Qt::CaseInsensitive);  // x == 0
   int y = QString::compare("auto", "Car", Qt::CaseSensitive);     // y > 0
   int z = QString::compare("auto", "Car", Qt::CaseInsensitive);   // z < 0

} void Widget::containsFunction() {

   QString str = "Peter Pan";
   str.contains("peter", Qt::CaseInsensitive);    // returns true

} void Widget::countFunction() {

   QString str = "banana and panama";
   str.count(QRegExp("a[nm]a"));    // returns 4

} void Widget::dataFunction() {

   QString str = "Hello world";
   QChar *data = str.data();
   while (!data->isNull()) {
       qDebug() << data->unicode();
       ++data;
   }

} void Widget::endsWithFunction() {

   QString str = "Bananas";
   str.endsWith("anas");         // returns true
   str.endsWith("pple");         // returns false

} void Widget::fillFunction() {

   QString str = "Berlin";
   str.fill("z");
   // str == "zzzzzz"
   str.fill("A", 2);
   // str == "AA"

} void Widget::fromRawDataFunction() {

    QRegExp pattern;
    static const QChar unicode[] = {
            0x005A, 0x007F, 0x00A4, 0x0060,
            0x1009, 0x0020, 0x0020};
    int size = sizeof(unicode) / sizeof(QChar);
    QString str = QString::fromRawData(unicode, size);
    if (str.contains(QRegExp(pattern))) {
        // ...

    }

} void Widget::indexOfFunction() {

   QString x = "sticky question";
   QString y = "sti";
   x.indexOf(y);               // returns 0
   x.indexOf(y, 1);            // returns 10
   x.indexOf(y, 10);           // returns 10
   x.indexOf(y, 11);           // returns -1

} void Widget::firstIndexOfFunction() {

   QString str = "the minimum";
   str.indexOf(QRegExp("m[aeiou]"), 0);       // returns 4

} void Widget::insertFunction() {

   QString str = "Meal";
   str.insert(1, QString("ontr"));
   // str == "Montreal"

} void Widget::isEmptyFunction() {

   QString().isEmpty();            // returns true
   QString("").isEmpty();          // returns true
   QString("x").isEmpty();         // returns false
   QString("abc").isEmpty();       // returns false

} void Widget::isNullFunction() {

   QString().isNull();             // returns true
   QString("").isNull();           // returns false
   QString("abc").isNull();        // returns false

} void Widget::lastIndexOfFunction() {

   QString x = "crazy azimuths";
   QString y = "az";
   x.lastIndexOf(y);           // returns 6
   x.lastIndexOf(y, 6);        // returns 6
   x.lastIndexOf(y, 5);        // returns 2
   x.lastIndexOf(y, 1);        // returns -1
   QString str = "the minimum";
   str.lastIndexOf(QRegExp("m[aeiou]"));      // returns 8

} void Widget::leftFunction() {

   QString x = "Pineapple";
   QString y = x.left(4);      // y == "Pine"

} void Widget::leftJustifiedFunction() {

   QString s = "apple";
   QString t = s.leftJustified(8, ".");    // t == "apple..."
   QString str = "Pineapple";
   str = str.leftJustified(5, ".", true);    // str == "Pinea"

} void Widget::midFunction() {

   QString x = "Nine pineapples";
   QString y = x.mid(5, 4);            // y == "pine"
   QString z = x.mid(5);               // z == "pineapples"

} void Widget::numberFunction() {

   long a = 63;
   QString s = QString::number(a, 16);             // s == "3f"
   QString t = QString::number(a, 16).toUpper();     // t == "3F"

} void Widget::prependFunction() {

   QString x = "ship";
   QString y = "air";
   x.prepend(y);
   // x == "airship"

} void Widget::removeFunction() {

   QString s = "Montreal";
   s.remove(1, 4);
   // s == "Meal"
   QString t = "Ali Baba";
   t.remove(QChar("a"), Qt::CaseInsensitive);
   // t == "li Bb"
   QString r = "Telephone";
   r.remove(QRegExp("[aeiou]."));
   // r == "The"

} void Widget::replaceFunction() {

   QString x = "Say yes!";
   QString y = "no";
   x.replace(4, 3, y);
   // x == "Say no!"
   QString str = "colour behaviour flavour neighbour";
   str.replace(QString("ou"), QString("o"));
   // str == "color behavior flavor neighbor"
   QString s = "Banana";
   s.replace(QRegExp("a[mn]"), "ox");
   // s == "Boxoxa"
   QString t = "A bon mot.";
   t.replace(QRegExp("([^<]*)"), "\\emph{\\1}");
   // t == "A \\emph{bon mot}."
   QString equis = "xxxxxx";
   equis.replace("xx", "x");
   // equis == "xxx"    

} void Widget::reserveFunction() {

   QString result;
   int maxSize;
   bool condition;
   QChar nextChar;
   result.reserve(maxSize);
   while (condition)
       result.append(nextChar);
   result.squeeze();

} void Widget::resizeFunction() {

   QString s = "Hello world";
   s.resize(5);
   // s == "Hello"
   s.resize(8);
   // s == "Hello???" (where ? stands for any character)
   QString t = "Hello";
   t += QString(10, "X");
   // t == "HelloXXXXXXXXXX"
   QString r = "Hello";
   r = r.leftJustified(10, " ");
   // r == "Hello     "

} void Widget::rightFunction() {

   QString x = "Pineapple";
   QString y = x.right(5);      // y == "apple"

} void Widget::rightJustifiedFunction() {

   QString s = "apple";
   QString t = s.rightJustified(8, ".");    // t == "...apple"
   QString str = "Pineapple";
   str = str.rightJustified(5, ".", true);    // str == "Pinea"

} void Widget::sectionFunction() {

   QString str;
   QString csv = "forename,middlename,surname,phone";
   QString path = "/usr/local/bin/myapp"; // First field is empty
   QString::SectionFlag flag = QString::SectionSkipEmpty;
   str = csv.section(",", 2, 2);   // str == "surname"
   str = path.section("/", 3, 4);  // str == "bin/myapp"
   str = path.section("/", 3, 3, flag); // str == "myapp"
   str = csv.section(",", -3, -2);  // str == "middlename,surname"
   str = path.section("/", -1); // str == "myapp"
   QString data = "forename**middlename**surname**phone";
   str = data.section("**", 2, 2); // str == "surname"
   str = data.section("**", -3, -2); // str == "middlename**surname"
   QString line = "forename\tmiddlename  surname \t \t phone";
   QRegExp sep("\\s+");
   str = line.section(sep, 2, 2); // s == "surname"
   str = line.section(sep, -3, -2); // s == "middlename  surname"

} void Widget::setNumFunction() {

   QString str;
   str.setNum(1234);       // str == "1234"

} void Widget::simplifiedFunction() {

   QString str = "  lots\t of\nwhitespace\r\n ";
   str = str.simplified();
   // str == "lots of whitespace";

} void Widget::sizeFunction() {

   QString str = "World";
   int n = str.size();         // n == 5
   str.data()[0];              // returns "W"
   str.data()[4];              // returns "d"
   str.data()[5];              // returns "\0"

} void Widget::splitFunction() {

   QString str;
   QStringList list;
   str = "Some  text\n\twith  strange whitespace.";
   list = str.split(QRegExp("\\s+"));
   // list: [ "Some", "text", "with", "strange", "whitespace." ]
   str = "This time, a normal English sentence.";
   list = str.split(QRegExp("\\W+"), QString::SkipEmptyParts);
   // list: [ "This", "time", "a", "normal", "English", "sentence" ]
   str = "Now: this sentence fragment.";
   list = str.split(QRegExp("\\b"));
   // list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ]

} void Widget::splitCaseSensitiveFunction() {

   QString str = "a,,b,c";
   QStringList list1 = str.split(",");
   // list1: [ "a", "", "b", "c" ]
   QStringList list2 = str.split(",", QString::SkipEmptyParts);
   // list2: [ "a", "b", "c" ]

} void Widget::sprintfFunction() {

   size_t BufSize;
   char buf[BufSize];
   ::snprintf(buf, BufSize, "%lld", 123456789LL);
   QString str = QString::fromAscii(buf);
   QString result;
   QTextStream(&result) << "pi = " << 3.14;
   // result == "pi = 3.14"

} void Widget::startsWithFunction() {

   QString str = "Bananas";
   str.startsWith("Ban");     // returns true
   str.startsWith("Car");     // returns false

} void Widget::toDoubleFunction() {

   QString str = "1234.56";
   double val = str.toDouble();   // val == 1234.56
   bool ok;
   double d;
   d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456


   QLocale::setDefault(QLocale::C);
   d = QString( "1234,56" ).toDouble(&ok); // ok == false
   d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56

   QLocale::setDefault(QLocale::German);
   d = QString( "1234,56" ).toDouble(&ok); // ok == true, d == 1234.56
   d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56
   QLocale::setDefault(QLocale::C);
   d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false

} void Widget::toFloatFunction() {

   QString str1 = "1234.56";
   str1.toFloat();             // returns 1234.56
   bool ok;
   QString str2 = "R2D2";
   str2.toFloat(&ok);          // returns 0.0, sets ok to false

} void Widget::toIntFunction() {

   QString str = "FF";
   bool ok;
   int hex = str.toInt(&ok, 16);       // hex == 255, ok == true
   int dec = str.toInt(&ok, 10);       // dec == 0, ok == false

} void Widget::toLongFunction() {

   QString str = "FF";
   bool ok;
   long hex = str.toLong(&ok, 16);     // hex == 255, ok == true
   long dec = str.toLong(&ok, 10);     // dec == 0, ok == false

} void Widget::toLongLongFunction() {

   QString str = "FF";
   bool ok;
   qint64 hex = str.toLongLong(&ok, 16);      // hex == 255, ok == true
   qint64 dec = str.toLongLong(&ok, 10);      // dec == 0, ok == false

} void Widget::toLowerFunction() {

   QString str = "Qt by NOKIA";
   str = str.toLower();        // str == "qt by nokia"

} void Widget::toShortFunction() {

   QString str = "FF";
   bool ok;
   short hex = str.toShort(&ok, 16);   // hex == 255, ok == true
   short dec = str.toShort(&ok, 10);   // dec == 0, ok == false

} void Widget::toUIntFunction() {

   QString str = "FF";
   bool ok;
   uint hex = str.toUInt(&ok, 16);     // hex == 255, ok == true
   uint dec = str.toUInt(&ok, 10);     // dec == 0, ok == false

} void Widget::toULongFunction() {

   QString str = "FF";
   bool ok;
   ulong hex = str.toULong(&ok, 16);   // hex == 255, ok == true
   ulong dec = str.toULong(&ok, 10);   // dec == 0, ok == false

} void Widget::toULongLongFunction() {

   QString str = "FF";
   bool ok;
   quint64 hex = str.toULongLong(&ok, 16);    // hex == 255, ok == true
   quint64 dec = str.toULongLong(&ok, 10);    // dec == 0, ok == false

} void Widget::toUShortFunction() {

   QString str = "FF";
   bool ok;
   ushort hex = str.toUShort(&ok, 16);     // hex == 255, ok == true
   ushort dec = str.toUShort(&ok, 10);     // dec == 0, ok == false

} void Widget::toUpperFunction() {

   QString str = "TeXt";
   str = str.toUpper();        // str == "TEXT"

} void Widget::trimmedFunction() {

   QString str = "  lots\t of\nwhitespace\r\n ";
   str = str.trimmed();
   // str == "lots\t of\nwhitespace"

} void Widget::truncateFunction() {

   QString str = "Vladivostok";
   str.truncate(4);
   // str == "Vlad"

} void Widget::plusEqualOperator() {

   QString x = "free";
   QString y = "dom";
   x += y;
   // x == "freedom"

} void Widget::arrayOperator() {

   QString str;
   if (str[0] == QChar("?"))
       str[0] = QChar("_");

} void Widget::midRefFunction() { //! [midRef]

   QString x = "Nine pineapples";
   QStringRef y = x.midRef(5, 4);      // y == "pine"
   QStringRef z = x.midRef(5);         // z == "pineapples"

//! [midRef] } void Widget::leftRefFunction() { //! [leftRef]

   QString x = "Pineapple";
   QStringRef y = x.leftRef(4);        // y == "Pine"

//! [leftRef] } void Widget::rightRefFunction() { //! [rightRef]

   QString x = "Pineapple";
   QStringRef y = x.rightRef(5);       // y == "apple"

//! [rightRef] }

int main(int argc, char *argv[]) {

   QApplication app(argc, argv);
   Widget widget;
   widget.show();
   return app.exec();

}


 </source>


cpp with qstring

<source lang="cpp"> /*

* Copyright (c) 2006-2007, Johan Thelin
* 
* All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without modification, 
* are permitted provided that the following conditions are met:
* 
*     * Redistributions of source code must retain the above copyright notice, 
*       this list of conditions and the following disclaimer.
*     * Redistributions in binary form must reproduce the above copyright notice,  
*       this list of conditions and the following disclaimer in the documentation 
*       and/or other materials provided with the distribution.
*     * Neither the name of APress nor the names of its contributors 
*       may be used to endorse or promote products derived from this software 
*       without specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

  1. include <QObject>
  2. include <QtDebug>
  3. include <QString>

class MyClass : public QObject { public:

 MyClass( const QString &text, QObject *parent = 0 );
 const QString &text();
 void setText( const QString &text );
 int getLengthOfText();
 

private:

 QString m_text;

}; MyClass::MyClass( const QString &text, QObject *parent ) : QObject( parent ) {

 m_text = text;

} const QString &MyClass::text() { return m_text; } void MyClass::setText( const QString &text ) { m_text = text; } int MyClass::getLengthOfText() { return m_text.size(); } int main( int argc, char **argv ) {

 QObject parent;
 MyClass *a, *b, *c;
 a = new MyClass( "foo", &parent );
 b = new MyClass( "ba-a-ar", &parent );
 c = new MyClass( "baz", &parent );
 qDebug() << a->text() << " (" << a->getLengthOfText() << ")";
 a->setText( b->text() );
 qDebug() << a->text() << " (" << a->getLengthOfText() << ")";
 return a->getLengthOfText() - c->getLengthOfText();

}


 </source>


extends QString

<source lang="cpp">

  1. include <QList>
  2. include <QtAlgorithms> // for qSort()
  3. include <QStringList>
  4. include <QDebug>

class CaseIgnoreString : public QString { public:

   CaseIgnoreString(const QString& other = QString()) : QString(other) {}
   bool operator<(const QString & other) const {
       return toLower() < other.toLower();
   }
   bool operator==(const QString& other) const {
       return toLower() == other.toLower();
   }

}; int main() {

   CaseIgnoreString s1("A"), s2("b"), s3 ("C"), s4("d"), s5 ("D");
   QList<CaseIgnoreString> namelist;
   namelist << s5 << s1 << s3 << s4 << s2;

   qSort(namelist.begin(), namelist.end());
   int i=0;
   foreach (QString stritr, namelist) {
       qDebug() << QString("namelist[%1] = %2").arg(i++).arg(stritr) ;
   }
   QStringList strlist;
   strlist << s5 << s1 << s3 << s4 << s2; 
   qSort(strlist.begin(), strlist.end());
   qDebug() << "StringList sorted: " + strlist.join(", ") << endl;
   return 0;

}


 </source>


Format command line parameter with QString

<source lang="cpp">

  1. include <QTextStream>
  2. include <QCoreApplication>
  3. include <QStringList>

int main (int argc, char* argv[]) {

   QCoreApplication app(argc, argv);
   QTextStream cout(stdout, QIODevice::WriteOnly);
   QStringList arglst = app.arguments();
   cout << "argc = " << argc << endl;
   for (int i=0; i<arglst.size(); ++i) {
       cout << QString("argv#%1 is %2").arg(i).arg(arglst[i]) << endl;
   }
   int num = arglst[argc - 1].toInt();
   cout << num * 2 << endl;

}


 </source>


Qt type size

<source lang="cpp">

  1. include <QString>
  2. include <QTextStream>

int main() {

   QTextStream cout(stdout);
   char* charp = array1;
   QString qstring = "This is a unicode QString." ;
   Q_ASSERT (sizeof(i) == sizeof(int));
   cout << "  c type sizes: \n";
   cout << "  qt type sizes: \n";  
   cout << "sizeof(qstring) = " << sizeof(qstring) << endl;
   cout << "sizeof(qint32) = " << sizeof (qint32) << "\n"; 
   cout << "sizeof(qint64) = " << sizeof(qint64) << "\n"; 
   cout << "sizeof(qchar) = " << sizeof (QChar) << endl;  
   cout << "qstring.length() = " << qstring.length() << endl; 
   return 0;

}


 </source>


Using QString as the parameter

<source lang="cpp">

  1. include <QString>
  2. include <qstd.h>

using namespace qstd; class Person { public:

   void setNameV( QString newName) {
       newName += " A";  
       m_Name = newName;
   }
   void setNameCR( const QString& newName) {
       m_Name = newName;
   }
   void setNameR( QString& newName) {
       newName += " B";
       m_Name = newName;
   }
   QString m_Name;

};

int main() {

   Person p;
   QString name("1");
   p.setNameCR(name);  
   p.setNameCR("2"); 
   p.setNameV("3");  
   p.setNameR(name);     
   cout << name;         

}


 </source>