QtC++与QString详解

QString概述

QString是Qtc++中用于处理字符串的类,它提供了大量的方法和操作符,使得字符串处理变得简单高效。QString类支持Unicode字符集,并且可以进行隐式的共享,这样可以减少内存消耗和拷贝开销

QString举例

#include 
#include 
#include 

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

    // 1. 创建QString
    QString str1 = "Hello, ";
    QString str2 = "World!";

    // 2. 字符串连接
    QString combinedStr = str1 + str2;
    qDebug() << "Combined String: " << combinedStr;

    // 3. 获取字符串长度
    int length = combinedStr.length();
    qDebug() << "String Length: " << length;

    // 4. 获取字符串的第一个和最后一个字符
    QChar firstChar = combinedStr.at(0);
    QChar lastChar = combinedStr.at(combinedStr.length() - 1);
    qDebug() << "First Character: " << firstChar << ", Last Character: " << lastChar;

    // 5. 字符串比较
    bool isEqual = (str1 == str2);
    bool isLess = (str1 < str2);
    qDebug() << "Are str1 and str2 equal? " << isEqual;
    qDebug() << "Is str1 less than str2? " << isLess;

    // 6. 查找和替换字符串
    QString text = "Qt is a powerful C++ framework for GUI development.";
    int index = text.indexOf("C++");
    text.replace("C++", "C#");
    qDebug() << "Index of 'C++': " << index;
    qDebug() << "Modified Text: " << text;

    // 7. 字符串分割
    QString csvData = "Alice,Bob,Charlie,David";
    QStringList list = csvData.split(',');
    qDebug() << "CSV Data Split:";
    for (const QString& item : list) {
        qDebug() << item;
    }

    // 8. 字符串大小写转换
    QString mixedCase = "AbCdEfG";
    QString upperCase = mixedCase.toUpper();
    QString lowerCase = mixedCase.toLower();
    qDebug() << "Original String: " << mixedCase;
    qDebug() << "Uppercase: " << upperCase;
    qDebug() << "Lowercase: " << lowerCase;

    // 9. 检查字符串是否以特定前缀或后缀开始
    QString fileName = "document.txt";
    bool startsWith = fileName.startsWith("doc");
    bool endsWith = fileName.endsWith(".txt");
    qDebug() << "Starts with 'doc'? " << startsWith;
    qDebug() << "Ends with '.txt'? " << endsWith;

    // 10. 移除空白字符
    QString stringWithWhitespace = "  Trim this string  ";
    QString trimmedString = stringWithWhitespace.trimmed();
    qDebug() << "Original String: " << stringWithWhitespace;
    qDebug() << "Trimmed String: " << trimmedString;

    // 11. 格式化字符串
    QString formatted = QString("Today is %1 %2, %3").arg("November", "4", "2023");
    qDebug() << "Formatted String: " << formatted;

    // 12. 获取子字符串
    QString original = "Hello, World!";
    QString subString = original.mid(7, 5);
    qDebug() << "Substring: " << subString;

    // 13. 判断字符串是否为空
    QString emptyStr;
    bool isEmpty = emptyStr.isEmpty();
    qDebug() << "Is the string empty? " << isEmpty;

    // 14. 移除指定字符
    QString stringWithDash = "Dash-String-Dash";
    stringWithDash = stringWithDash.remove('-');
    qDebug() << "String with Dashes Removed: " << stringWithDash;

    // 15. 插入字符
    QString insertStr = "Hello, World!";
    insertStr.insert(5, "Awesome ");
    qDebug() << "Inserted String: " << insertStr;

    // 16. 字符串重复
    QString repeatedStr = "abc";
    repeatedStr = repeatedStr.repeated(3);
    qDebug() << "Repeated String: " << repeatedStr;

    // 17. 检查字符串是否包含子串
    QString searchStr = "The quick brown fox";
    bool contains = searchStr.contains("brown");
    qDebug() << "Contains 'brown'? " << contains;

    // 18. 字符串转换为整数
    QString intStr = "42";
    int intValue = intStr.toInt();
    qDebug() << "Integer Value: " << intValue;

    // 19. 字符串转换为浮点数
    QString floatStr = "3.14";
    float floatValue = floatStr.toFloat();
    qDebug() << "Float Value: " << floatValue;

    // 20. 替换多个字符
    QString replaceStr = "C++, C#, Python, C++";
    replaceStr = replaceStr.replace("C++", "Java", Qt::CaseInsensitive);
    qDebug() << "Replaced String: " << replaceStr;

    // 21. 字符串是否是数字
    QString numericStr = "12345";
    bool isNumeric = numericStr.isNumeric();
    qDebug() << "Is Numeric? " << isNumeric;

    // 22. 检查字符串是否包含空白字符
    QString spaceStr = "Hello,  World!";
    bool hasWhitespace = spaceStr.contains(QRegExp("\\s"));
    qDebug() << "Contains Whitespace? " << hasWhitespace;

    // 23. 移除指定前缀
    QString prefixStr = "Prefix: Data";
    prefixStr.remove("Prefix: ");
    qDebug() << "String with Prefix Removed: " << prefixStr;

    // 24. 检查字符串是否以特定字符开始
    QString startsWithStr = "Hello, World!";
    bool startsWithHello = startsWithStr.startsWith("Hello");
    qDebug() << "Starts with 'Hello'? " << startsWithHello;

    // 25. 字符串转换为大写形式
    QString mixedCaseStr = "HelloWorld";
    QString upperStr = mixedCaseStr.toUpper();
    qDebug() << "Uppercase String: " << upperStr;

    // 26. 字符串转换为小写形式
    QString mixedCaseStr2 = "HelloWorld";
    QString lowerStr = mixedCaseStr2.toLower();
    qDebug() << "Lowercase String: " << lowerStr;

    // 27. 字符串是否以数字开头
    QString numStr = "42 is the answer.";
    bool startsWithNumber = numStr[0].isDigit();
    qDebug() << "Starts with a number? " << startsWithNumber;

    // 28. 替换所有字符
    QString replaceAllStr = "C++, C++, C++";
    replaceAllStr = replaceAllStr.replace("C++", "Java", Qt::CaseInsensitive, -1);
    qDebug() << "All Occurrences Replaced: " << replaceAllStr;

    // 29. 字符串是否为纯字母
    QString alphaStr = "AlphabetsOnly";
    bool isAlpha = alphaStr.isAlpha();
    qDebug() << "Is Alpha Only? " << isAlpha;

    // 30. 移除多个字符
    QString removeChars = "Remove #$@! these characters!";
    removeChars.remove(QRegExp("[#$@!]"));
    qDebug() << "Removed Special Characters: " << removeChars;

    // 31. 字符串是否包含特定字符
    QString charStr = "Hello, World!";
    bool containsChar = charStr.contains('W');
    qDebug() << "Contains 'W'? " << containsChar;

    // 32. 字符串是否包含数字
    QString numStr2 = "This is string with number 123.";
    bool containsNum = numStr2.contains(QRegExp("\\d"));
    qDebug() << "Contains a Number? " << containsNum;

    // 33. 移除尾部空白字符
    QString trailingWhitespace = "Remove trailing spaces      ";
    trailingWhitespace = trailingWhitespace.trimmed();
    qDebug() << "Trailing Spaces Removed: " << trailingWhitespace;

    // 34. 字符串截断
    QString longStr = "This is a very long string that needs to be truncated.";
    longStr.truncate(20);
    qDebug() << "Truncated String: " << longStr;

    // 35. 获取字符串的左半部分
    QString fullStr = "Hello, World!";
    QString leftHalf = fullStr.left(5);
    qDebug() << "Left Half: " << leftHalf;

    // 36. 获取字符串的右半部分
    QString fullStr2 = "Hello, World!";
    QString rightHalf = fullStr2.right(6);
    qDebug() << "Right Half: " << rightHalf;

    // 37. 字符串是否包含字母
    QString letterStr = "12345";
    bool containsLetter = letterStr.contains(QRegExp("[A-Za-z]"));
    qDebug() << "Contains a Letter? " << containsLetter;

    // 38. 字符串是否包含特定前缀
    QString prefix = "Prefix: Data";
    bool hasPrefix = prefix.startsWith("Prefix:");
    qDebug() << "Has Prefix? " << hasPrefix;

    // 39. 字符串是否以特定字符结尾
    QString endsWithStr = "Hello, World!";
    bool endsWithComma = endsWithStr.endsWith(',');
    qDebug() << "Ends with ','? " << endsWithComma;

    // 40. 获取字符串的子字符串
    QString sourceStr = "Hello, World!";
    QString subStr = sourceStr.mid(7, 5);
    qDebug() << "Substring: " << subStr;

    // 41. 替换第一个匹配
    QString replaceFirstStr = "C++, C++, C++";
    replaceFirstStr.replace("C++", "Java", Qt::CaseInsensitive);
    qDebug() << "First Occurrence Replaced: " << replaceFirstStr;

    // 42. 字符串是否以特定字符结束
    QString endsWithStr2 = "Hello, World!";
    bool endsWithExclamation = endsWithStr2.endsWith('!');
    qDebug() << "Ends with '!'? " << endsWithExclamation;

    // 43. 删除字符串的左半部分
    QString leftTrimStr = "   Left trim this string";
    leftTrimStr = leftTrimStr.trimmed();
    qDebug() << "Left Trimmed String: " << leftTrimStr;

    // 44. 获取字符串的重复
    QString repeatStr = "abc";
    QString repeatedStr = repeatStr.repeated(3);
    qDebug() << "Repeated String: " << repeatedStr;

    // 45. 替换第n个匹配
    QString replaceNthStr = "C++, C++, C++";
    replaceNthStr.replace(QRegExp("C\\+\\+"), "Java", 2);
    qDebug() << "Second Occurrence Replaced: " << replaceNthStr;

    // 46. 移除特定前缀
    QString prefixStr2 = "Prefix: Data";
    prefixStr2.remove(0, 7);
    qDebug() << "String with Prefix Removed: " << prefixStr2;

    // 47. 获取字符串的重复
    QString repeatStr2 = "abc";
    QString repeatedStr2 = repeatStr2.repeated(3);
    qDebug() << "Repeated String: " << repeatedStr2;

    // 48. 替换所有字母
    QString replaceLetters = "Replace all letters in this string";
    replaceLetters.replace(QRegExp("[A-Za-z]"), "*");
    qDebug() << "Letters Replaced with '*': " << replaceLetters;

    // 49. 检查字符串是否为十六进制数
    QString hexStr = "1A3F";
    bool isHex = hexStr.contains(QRegExp("^[0-9A-Fa-f]+$"));
    qDebug() << "Is Hexadecimal Number? " << isHex;

    // 50. 字符串拼接
    QStringList words;
    words << "The" << "quick" << "brown" << "fox" << "jumps" << "over" << "the" << "lazy" << "dog";
    QString joinedWords = words.join(" ");
    qDebug() << "Joined Words: " << joinedWords;

    return a.exec();
}

QString高级用法

#include 
#include 
#include 

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

    // 1. 字符串拼接多个元素
    QStringList words;
    words << "The" << "quick" << "brown" << "fox" << "jumps" << "over" << "the" << "lazy" << "dog";
    QString joinedWords = words.join(" ");
    qDebug() << "Joined Words: " << joinedWords;

    // 2. 使用正则表达式提取匹配项
    QString text = "Emails: [email protected], [email protected]";
    QRegExp rx("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}");
    QStringList emails;

    int pos = 0;
    while ((pos = rx.indexIn(text, pos)) != -1) {
        emails << rx.cap(0);
        pos += rx.matchedLength();
    }
    qDebug() << "Extracted Emails: " << emails;

    // 3. 字符串转换为HTML
    QString plainText = "This is bold and italic text.";
    QString htmlText = QString("%1").arg(plainText);
    qDebug() << "HTML Text: " << htmlText;

    // 4. 字符串到日期时间的转换
    QString dateTimeStr = "2023-11-04T10:30:00";
    QDateTime dateTime = QDateTime::fromString(dateTimeStr, "yyyy-MM-ddTHH:mm:ss");
    qDebug() << "Parsed DateTime: " << dateTime.toString();

    // 5. 将多行文本分割为行
    QString multiLineText = "Line 1\nLine 2\nLine 3";
    QStringList lines = multiLineText.split("\n", QString::SkipEmptyParts);
    qDebug() << "Split Lines: " << lines;

    // 6. 使用逗号分隔的字符串转换为QStringList
    QString csvData = "Alice,Bob,Charlie,David";
    QStringList list = csvData.split(',');
    qDebug() << "CSV Data as QStringList: " << list;

    // 7. 去除特定字符
    QString stringWithDashes = "This-is-some-text";
    stringWithDashes.remove('-');
    qDebug() << "String with Dashes Removed: " << stringWithDashes;

    // 8. 生成随机字符串
    QString randomString;
    const QString possibleCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");

    for (int i = 0; i < 10; ++i) {
        int index = qrand() % possibleCharacters.length();
        QChar nextChar = possibleCharacters.at(index);
        randomString.append(nextChar);
    }
    qDebug() << "Random String: " << randomString;

    // 9. 将QStringList元素连接为一个字符串
    QStringList fruits = {"Apple", "Banana", "Cherry"};
    QString fruitString = fruits.join(", ");
    qDebug() << "Joined Fruits: " << fruitString;

    // 10. 使用QString的remove()函数去除特定子串
    QString textToModify = "This is an example. This is another example.";
    textToModify.remove("This");
    qDebug() << "Modified Text: " << textToModify;

    return a.exec();
}

你可能感兴趣的:(QT-GPT知识汇总,qt,c++,开发语言)