点击上方蓝字关注我们 字符串是图形界面的基石,虽然控件和图标看起来直观,但还是必定要使用字符串来显示信息。标准C++提供了两种字符串,一种是C语言风格的字符数组,以”\0”结束。另一种是字符串类String,QT字符串类QString功能更加强大。下面将介绍QString 的常见使用,QString 的互相转换、QString 涉及的运算符、QString 字符串查询和操作、利用 QTextStream 对 QString 做输入输出操作等。 1.6.1 QString支持的运算符
1.6.2 常用的构造类型
常用支持传入的类型包括:C语言风格的字符串,QByteArray类型,QChar类型,QString类型。 清空QString字符串可以使用clear()成员函数。 使用QString类需要加#include <QString>头文件。 1.6.3 基本类型转QString类型以下属于QString类的静态函数接口,可以单独直接调用。number属于重载函数,支持的类型包括C语言风格的字符串,QByteArray类型,QChar类型,QString类型,QLatin1String类型等。 1. 整型转QString原型示例:
2. 整数转QString类型示例:
除了以上的静态函数以外,QString还提供了setNum成员函数实现的相同的功能。setNum也是重载函数,支持的类型与number函数支持的类型一样。
3. 整数转QString类型示例:
1.6.4 QString类型转基本数据类型函数接口:
示例:
注意:如果QString字符串有小数点,转整型会失败,返回0。 比如:
|
QByteArray toLatin1() const QByteArray toLocal8Bit() const //支持中文编码 QByteArray QString::toUtf8() const //转为UTF-8编码 |
QString str("12345"); QByteArray text=str.toLocal8Bit(); qDebug()<<text.data(); //转为C语言风格的字符串输出 //输出结果:12345 |
QString str("123456789"); char* ch; QByteArray by = str.toLatin1(); ch=by.data(); qDebug()<<ch; |
QString str="123456789中文转换输出"; std::string stdstr = str.toStdString(); const char* ch = stdstr.c_str(); qDebug()<<ch; //输出结果:123456789中文转换输出 |
QString &append(const QString &str) QString &append(const QChar *str, int len) QString &append(QChar ch) QString &append(const QStringRef &reference) QString &append(QLatin1String str) QString &append(const char *str) QString &append(const QByteArray &ba) |
QString x = "free"; QString y = "dom"; x.append(y); //x == "freedom" 或者: QString x = "free"; QString y = "dom"; x+=y; // x == "freedom" |
int QString::count() const int QString::size() const |
QString str("QT5学习"); qDebug()<<str.size(); qDebug()<<str.count(); //结果输出为5 |
QString str("QT5学习"); QByteArray byte=str.toLocal8Bit(); qDebug()<<byte.size(); //结果输出为7 |
QString arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char( ' ' )) const |
QString text("abcd"); text+=QString(" %1 %2 %3 %4").arg("11","22","33","44"); qDebug()<<text; //结果输出为"abcd 11 22 33 44" |
QString text("abcd"); text+=QString(" %1 %2 %3 %4").arg(11).arg(22).arg(33).arg(44); qDebug()<<text; //结果输出为"abcd 11 22 33 44" |
QString text("abcd"); text+=QString(" %1 %2 %3 %4").arg(11.88).arg(22.88).arg(33.88).arg(44.88); qDebug()<<text; //结果输出为"abcd 11.88 22.88 33.88 44.88" |
QString text("abcd"); text+=QString(" %1 %2 %3 %4").arg('A').arg('B').arg('C').arg('D'); qDebug()<<text; //结果输出为"abcd A B C D" |
[static] int QString::compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
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 |
enum Qt::CaseSensitivity Qt::CaseInsensitive 0 //不敏感 Qt::CaseSensitive 1 //敏感 |
bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const int QString::count(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
enum Qt::CaseSensitivity Qt::CaseInsensitive 0 //不敏感 Qt::CaseSensitive 1 //敏感 |
QString str = "Peter Pan"; str.contains("peter", Qt::CaseInsensitive); // returns true |
QString str="123132123"; qDebug()<<str.count("123"); //结果输出为2 |
QString::fill ( QChar ch, int size = -1 ) 例: QString str = "Berlin"; str.fill('z'); // str == "zzzzzz" str.fill('A', 2); // str == "AA" |
int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const 例如: 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 |
QString & QString::insert ( int position, const QString & str ) 例如: QString str = "Meal"; str.insert(1, QString("ontr")); // str == "Montreal" |
bool QString::isEmpty () const 例如: QString().isEmpty(); // returns true QString("").isEmpty(); // returns true QString("x").isEmpty(); // returns false QString("abc").isEmpty(); // returns false |
bool QString::isNull () const 例如: QString().isNull(); // returns true QString("").isNull(); // returns false QString("abc").isNull(); // returns false |
QString QString::left ( int n ) const 例如: QString x = "Pineapple"; QString y = x.left(4); // y == "Pine" |
QString QString::mid ( int position, int n = -1 ) const 例如: QString x = "Nine pineapples"; QString y = x.mid(5, 4); // y == "pine" QString z = x.mid(5); // z == "pineapples" |
QString & QString::remove ( int position, int n ) 例如: QString s = "Montreal"; s.remove(1, 4); // s == "Meal" |
QString & QString::replace ( int position, int n, const QString & after ) 例如: QString x = "Say yes!"; QString y = "no"; x.replace(4, 3, y); // x == "Say no!" |
QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const 例如: 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" |
QString & QString::setNum ( uint n, int base = 10 ) |