diff options
Diffstat (limited to 'doc/src/snippets/qstring/main.cpp')
-rw-r--r-- | doc/src/snippets/qstring/main.cpp | 942 |
1 files changed, 942 insertions, 0 deletions
diff --git a/doc/src/snippets/qstring/main.cpp b/doc/src/snippets/qstring/main.cpp new file mode 100644 index 0000000..150044b --- /dev/null +++ b/doc/src/snippets/qstring/main.cpp @@ -0,0 +1,942 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, 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 are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtGui> +#include <QApplication> +#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() +{ +//! [0] + QString str = "Hello"; +//! [0] +} + +void Widget::constCharArray() +{ +//! [1] + static const QChar data[4] = { 0x0055, 0x006e, 0x10e3, 0x03a3 }; + QString str(data, 4); +//! [1] +} + +void Widget::characterReference() +{ +//! [2] + QString str; + str.resize(4); + + str[0] = QChar('U'); + str[1] = QChar('n'); + str[2] = QChar(0x10e3); + str[3] = QChar(0x03a3); +//! [2] +} + +void Widget::atFunction() +{ +//! [3] + 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]"; + } +//! [3] +} + +void Widget::stringLiteral() +{ +//! [4] + QString str; + + if (str == "auto" || str == "extern" + || str == "static" || str == "register") { + // ... + } +//! [4] +} + +void Widget::modify() +{ +//! [5] + QString str = "and"; + str.prepend("rock "); // str == "rock and" + str.append(" roll"); // str == "rock and roll" + str.replace(5, 3, "&"); // str == "rock & roll" +//! [5] +} + +void Widget::index() +{ +//! [6] + QString str = "We must be <b>bold</b>, very <b>bold</b>"; + int j = 0; + + while ((j = str.indexOf("<b>", j)) != -1) { + qDebug() << "Found <b> tag at index position" << j; + ++j; + } +//! [6] +} + +//! [7] + QString Widget::boolToString(bool b) + { + QString result; + if (b) + result = "True"; + else + result = "False"; + return result; + } +//! [7] + + +void Widget::nullVsEmpty() +{ +//! [8] + 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 +//! [8] +} + +void Widget::appendFunction() +{ +//! [9] + QString x = "free"; + QString y = "dom"; + + x.append(y); + // x == "freedom" +//! [9] + +//! [10] + x.insert(x.size(), y); +//! [10] +} + +void Widget::argFunction() +{ +//! [11] + 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); +//! [11] + +//! [12] //! [13] + QString str; +//! [12] + str = "%1 %2"; + + str.arg("%1f", "Hello"); // returns "%1f Hello" + str.arg("%1f").arg("Hello"); // returns "Hellof %2" +//! [13] + +//! [14] + 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" +//! [14] +} + +void Widget::chopFunction() +{ +//! [15] + QString str("LOGOUT\r\n"); + str.chop(2); + // str == "LOGOUT" +//! [15] +} + +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() +{ +//! [16] + 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 +//! [16] +} + +void Widget::containsFunction() +{ +//! [17] + QString str = "Peter Pan"; + str.contains("peter", Qt::CaseInsensitive); // returns true +//! [17] +} + +void Widget::countFunction() +{ +//! [18] + QString str = "banana and panama"; + str.count(QRegExp("a[nm]a")); // returns 4 +//! [18] +} + +void Widget::dataFunction() +{ +//! [19] + QString str = "Hello world"; + QChar *data = str.data(); + while (!data->isNull()) { + qDebug() << data->unicode(); + ++data; + } +//! [19] +} + +void Widget::endsWithFunction() +{ +//! [20] + QString str = "Bananas"; + str.endsWith("anas"); // returns true + str.endsWith("pple"); // returns false +//! [20] +} + +void Widget::fillFunction() +{ +//! [21] + QString str = "Berlin"; + str.fill('z'); + // str == "zzzzzz" + + str.fill('A', 2); + // str == "AA" +//! [21] +} + +void Widget::fromRawDataFunction() +{ +//! [22] + 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))) { + // ... +//! [22] //! [23] + } +//! [23] +} + +void Widget::indexOfFunction() +{ +//! [24] + 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 +//! [24] +} + +void Widget::firstIndexOfFunction() +{ +//! [25] + QString str = "the minimum"; + str.indexOf(QRegExp("m[aeiou]"), 0); // returns 4 +//! [25] +} + +void Widget::insertFunction() +{ +//! [26] + QString str = "Meal"; + str.insert(1, QString("ontr")); + // str == "Montreal" +//! [26] +} + +void Widget::isEmptyFunction() +{ +//! [27] + QString().isEmpty(); // returns true + QString("").isEmpty(); // returns true + QString("x").isEmpty(); // returns false + QString("abc").isEmpty(); // returns false +//! [27] +} + +void Widget::isNullFunction() +{ +//! [28] + QString().isNull(); // returns true + QString("").isNull(); // returns false + QString("abc").isNull(); // returns false +//! [28] +} + +void Widget::lastIndexOfFunction() +{ +//! [29] + 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 +//! [29] + +//! [30] + QString str = "the minimum"; + str.lastIndexOf(QRegExp("m[aeiou]")); // returns 8 +//! [30] +} + +void Widget::leftFunction() +{ +//! [31] + QString x = "Pineapple"; + QString y = x.left(4); // y == "Pine" +//! [31] +} + +void Widget::leftJustifiedFunction() +{ +//! [32] + QString s = "apple"; + QString t = s.leftJustified(8, '.'); // t == "apple..." +//! [32] + +//! [33] + QString str = "Pineapple"; + str = str.leftJustified(5, '.', true); // str == "Pinea" +//! [33] +} + +void Widget::midFunction() +{ +//! [34] + QString x = "Nine pineapples"; + QString y = x.mid(5, 4); // y == "pine" + QString z = x.mid(5); // z == "pineapples" +//! [34] +} + +void Widget::numberFunction() +{ +//! [35] + long a = 63; + QString s = QString::number(a, 16); // s == "3f" + QString t = QString::number(a, 16).toUpper(); // t == "3F" +//! [35] +} + +void Widget::prependFunction() +{ +//! [36] + QString x = "ship"; + QString y = "air"; + x.prepend(y); + // x == "airship" +//! [36] +} + +void Widget::removeFunction() +{ +//! [37] + QString s = "Montreal"; + s.remove(1, 4); + // s == "Meal" +//! [37] + +//! [38] + QString t = "Ali Baba"; + t.remove(QChar('a'), Qt::CaseInsensitive); + // t == "li Bb" +//! [38] + +//! [39] + QString r = "Telephone"; + r.remove(QRegExp("[aeiou].")); + // r == "The" +//! [39] +} + +void Widget::replaceFunction() +{ +//! [40] + QString x = "Say yes!"; + QString y = "no"; + x.replace(4, 3, y); + // x == "Say no!" +//! [40] + +//! [41] + QString str = "colour behaviour flavour neighbour"; + str.replace(QString("ou"), QString("o")); + // str == "color behavior flavor neighbor" +//! [41] + +//! [42] + QString s = "Banana"; + s.replace(QRegExp("a[mn]"), "ox"); + // s == "Boxoxa" +//! [42] + +//! [43] + QString t = "A <i>bon mot</i>."; + t.replace(QRegExp("<i>([^<]*)</i>"), "\\emph{\\1}"); + // t == "A \\emph{bon mot}." +//! [43] + +//! [86] + QString equis = "xxxxxx"; + equis.replace("xx", "x"); + // equis == "xxx" +//! [86] +} + +void Widget::reserveFunction() +{ +//! [44] + QString result; + int maxSize; + bool condition; + QChar nextChar; + + result.reserve(maxSize); + + while (condition) + result.append(nextChar); + + result.squeeze(); +//! [44] +} + +void Widget::resizeFunction() +{ +//! [45] + QString s = "Hello world"; + s.resize(5); + // s == "Hello" + + s.resize(8); + // s == "Hello???" (where ? stands for any character) +//! [45] + +//! [46] + QString t = "Hello"; + t += QString(10, 'X'); + // t == "HelloXXXXXXXXXX" +//! [46] + +//! [47] + QString r = "Hello"; + r = r.leftJustified(10, ' '); + // r == "Hello " +//! [47] +} + +void Widget::rightFunction() +{ +//! [48] + QString x = "Pineapple"; + QString y = x.right(5); // y == "apple" +//! [48] +} + +void Widget::rightJustifiedFunction() +{ +//! [49] + QString s = "apple"; + QString t = s.rightJustified(8, '.'); // t == "...apple" +//! [49] + +//! [50] + QString str = "Pineapple"; + str = str.rightJustified(5, '.', true); // str == "Pinea" +//! [50] +} + +void Widget::sectionFunction() +{ +//! [51] //! [52] + QString str; +//! [51] + 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" +//! [52] + +//! [53] + str = csv.section(',', -3, -2); // str == "middlename,surname" + str = path.section('/', -1); // str == "myapp" +//! [53] + +//! [54] + QString data = "forename**middlename**surname**phone"; + + str = data.section("**", 2, 2); // str == "surname" + str = data.section("**", -3, -2); // str == "middlename**surname" +//! [54] + +//! [55] + 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" +//! [55] +} + +void Widget::setNumFunction() +{ +//! [56] + QString str; + str.setNum(1234); // str == "1234" +//! [56] +} + +void Widget::simplifiedFunction() +{ +//! [57] + QString str = " lots\t of\nwhitespace\r\n "; + str = str.simplified(); + // str == "lots of whitespace"; +//! [57] +} + +void Widget::sizeFunction() +{ +//! [58] + QString str = "World"; + int n = str.size(); // n == 5 + str.data()[0]; // returns 'W' + str.data()[4]; // returns 'd' + str.data()[5]; // returns '\0' +//! [58] +} + +void Widget::splitFunction() +{ +//! [59] + QString str; + QStringList list; + + str = "Some text\n\twith strange whitespace."; + list = str.split(QRegExp("\\s+")); + // list: [ "Some", "text", "with", "strange", "whitespace." ] +//! [59] + +//! [60] + str = "This time, a normal English sentence."; + list = str.split(QRegExp("\\W+"), QString::SkipEmptyParts); + // list: [ "This", "time", "a", "normal", "English", "sentence" ] +//! [60] + +//! [61] + str = "Now: this sentence fragment."; + list = str.split(QRegExp("\\b")); + // list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ] +//! [61] +} + +void Widget::splitCaseSensitiveFunction() +{ +//! [62] + QString str = "a,,b,c"; + + QStringList list1 = str.split(","); + // list1: [ "a", "", "b", "c" ] + + QStringList list2 = str.split(",", QString::SkipEmptyParts); + // list2: [ "a", "b", "c" ] +//! [62] +} + +void Widget::sprintfFunction() +{ +//! [63] + size_t BufSize; + char buf[BufSize]; + + ::snprintf(buf, BufSize, "%lld", 123456789LL); + QString str = QString::fromAscii(buf); +//! [63] + +//! [64] + QString result; + QTextStream(&result) << "pi = " << 3.14; + // result == "pi = 3.14" +//! [64] +} + +void Widget::startsWithFunction() +{ +//! [65] + QString str = "Bananas"; + str.startsWith("Ban"); // returns true + str.startsWith("Car"); // returns false +//! [65] +} + +void Widget::toDoubleFunction() +{ +//! [66] + QString str = "1234.56"; + double val = str.toDouble(); // val == 1234.56 +//! [66] + +//! [67] + bool ok; + double d; + + d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456 +//! [67] + +//! [68] //! [69] + QLocale::setDefault(QLocale::C); + d = QString( "1234,56" ).toDouble(&ok); // ok == false +//! [68] + d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56 + +//! [69] //! [70] + 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 + +//! [70] + QLocale::setDefault(QLocale::C); + d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false +} + +void Widget::toFloatFunction() +{ +//! [71] + QString str1 = "1234.56"; + str1.toFloat(); // returns 1234.56 + + bool ok; + QString str2 = "R2D2"; + str2.toFloat(&ok); // returns 0.0, sets ok to false +//! [71] +} + +void Widget::toIntFunction() +{ +//! [72] + 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 +//! [72] +} + +void Widget::toLongFunction() +{ +//! [73] + 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 +//! [73] +} + +void Widget::toLongLongFunction() +{ +//! [74] + 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 +//! [74] +} + +void Widget::toLowerFunction() +{ +//! [75] + QString str = "TROlltECH"; + str = str.toLower(); // str == "trolltech" +//! [75] +} + +void Widget::toShortFunction() +{ +//! [76] + 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 +//! [76] +} + +void Widget::toUIntFunction() +{ +//! [77] + 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 +//! [77] +} + +void Widget::toULongFunction() +{ +//! [78] + 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 +//! [78] +} + +void Widget::toULongLongFunction() +{ +//! [79] + 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 +//! [79] +} + +void Widget::toUShortFunction() +{ +//! [80] + 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 +//! [80] +} + +void Widget::toUpperFunction() +{ +//! [81] + QString str = "TeXt"; + str = str.toUpper(); // str == "TEXT" +//! [81] +} + +void Widget::trimmedFunction() +{ +//! [82] + QString str = " lots\t of\nwhitespace\r\n "; + str = str.trimmed(); + // str == "lots\t of\nwhitespace" +//! [82] +} + +void Widget::truncateFunction() +{ +//! [83] + QString str = "Vladivostok"; + str.truncate(4); + // str == "Vlad" +//! [83] +} + +void Widget::plusEqualOperator() +{ +//! [84] + QString x = "free"; + QString y = "dom"; + x += y; + // x == "freedom" +//! [84] +} + +void Widget::arrayOperator() +{ +//! [85] + QString str; + + if (str[0] == QChar('?')) + str[0] = QChar('_'); +//! [85] +} + +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(); +} |