QString Class
QString 类提供 Unicode 字符串。更多
头文件: | #include <QString> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 所有成员(包括继承成员)的列表
- 已废弃成员
- QString 属于隐式共享类和字符串数据类。
该类具有很强的可比性。
该类与QChar,QLatin1StringView, const char16_t *,QStringView, 和QUtf8StringView 具有很强的可比性。
该类与QByteArray,QByteArrayView, 和 const char * 具有很强的可比性。
与字节数组比较时,其内容被解释为 UTF-8。
注意:该类中的所有函数都是可重入的。
公共类型
ConstIterator | |
Iterator | |
enum | NormalizationForm { NormalizationForm_D, NormalizationForm_C, NormalizationForm_KD, NormalizationForm_KC } |
enum | SectionFlag { SectionDefault, SectionSkipEmpty, SectionIncludeLeadingSep, SectionIncludeTrailingSep, SectionCaseInsensitiveSeps } |
flags | SectionFlags |
const_iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
iterator | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
公共函数
QString() | |
QString(QCharch) | |
QString(QLatin1StringViewstr) | |
QString(常量 QByteArray&ba) | |
QString(常量 char*str) | |
(since 6.1) | QString(常量 char8_t*str) |
QString(const QChar*unicode, qsizetypesize= -1) | |
QString(qsizetypesize, QCharch) | |
QString(const QString&other) | |
QString(QString&&other) | |
~QString() | |
QString & | append(const QString&str) |
QString & | append(QCharch) |
QString & | append(QLatin1StringViewstr) |
(since 6.0) QString & | append(QStringViewv) |
(since 6.5) QString & | append(QUtf8StringViewstr) |
QString & | append(const QByteArray&ba) |
QString & | append(const char*str) |
QString & | append(const QChar*str, qsizetypelen) |
字符串 | arg(args &&...args) 常量 |
QString | arg(const QString&a, intfieldWidth= 0, QCharfillChar= u' ') 常量 |
QString | arg(QChara, intfieldWidth= 0, QCharfillChar= u' ') 常量 |
QString | arg(QLatin1StringViewa, intfieldWidth= 0, QCharfillChar= u' ') 常量 |
QString | arg(QStringViewa, intfieldWidth= 0, QCharfillChar= u' ') 常量 |
QString | arg(chara, intfieldWidth= 0, QCharfillChar= u' ') 常量 |
QString | arg(inta, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') 常量 |
QString | arg(longa, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') 常量 |
QString | arg(qlonglonga, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') const |
QString | arg(qulonglonga, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') const |
QString | arg(shorta, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') 常量 |
QString | arg(uinta, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') 常量 |
QString | arg(ulonga, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') 常量 |
QString | arg(ushorta, intfieldWidth= 0, intbase= 10, QCharfillChar= u' ') 常量 |
QString | arg(doublea, intfieldWidth= 0, charformat= 'g', intprecision= -1, QCharfillChar= u' ') const |
(since 6.6) QString & | assign(QAnyStringViewv) |
(since 6.6) QString & | assign(InputIteratorfirst, InputIteratorlast) |
(since 6.6) QString & | assign(qsizetypen, QCharc) |
常量 QChar | at(qsizetypeposition) const |
QChar & | back() |
QChar | back()常量 |
QString::iterator | begin() |
QString::const_iterator | begin() 常量 |
Qsizetype | capacity()常量 |
QString::const_iterator | cbegin()常量 |
QString::const_iterator | cend()常量 |
void | chop(qsizetypen) |
QString | chopped(qsizetypelen) && |
QString | chopped(qsizetypelen) const & |
void | clear() |
int | compare(QCharch, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(QChar, Qt::CaseSensitivity cs = Qt::CaseSensitive) | compare(QLatin1StringViewother, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(QStringView s, Qt::CaseSensitive) | compare(QStringViews, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(QStringView) | compare(const QString&other, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
QString::const_iterator | constBegin()常量 |
常数 QChar * | constData()常量 |
QString::const_iterator | constEnd()常量 |
bool | contains(const QRegularExpression&re, QRegularExpressionMatch*rmatch= nullptr) const |
bool | contains(const QString&str, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | contains(QCharch, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | contains(QLatin1StringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | contains(QStringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | count(const QString&str, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | count(const QRegularExpression&re) const |
qsizetype | count(QCharch, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(since 6.0) qsizetype | count(QStringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
QString::const_reverse_iterator | crbegin() 常量 |
QString::const_reverse_iterator | crend()常量 |
QChar *(字符串 | data() |
常数 QChar * | data()常量 |
QString::iterator | end() |
QString::const_iterator | end()常量 |
bool | endsWith(const QString&s, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | endsWith(QCharc, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | endsWith(QLatin1StringViews, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | endsWith(QStringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(since 6.1) QString::iterator | erase(QString::const_iteratorfirst, QString::const_iteratorlast) |
(since 6.5) QString::iterator | erase(QString::const_iteratorit) |
QString & | fill(QCharch, qsizetypesize= -1) |
(since 6.0) QString | first(qsizetypen) && |
(since 6.0) QString | first(qsizetypen) const & |
QChar & | front() |
QChar | front()常量 |
qsizetype | indexOf(QLatin1StringViewstr, qsizetypefrom= 0, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | indexOf(const QRegularExpression&re, qsizetypefrom= 0, QRegularExpressionMatch*rmatch= nullptr) const |
qsizetype | indexOf(const QString&str, qsizetypefrom= 0, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | indexOf(QCharch, qsizetypefrom= 0, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | indexOf(QStringViewstr, qsizetypefrom= 0, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
QString & | insert(qsizetypeposition, const QString&str) |
QString & | insert(qsizetypeposition, QCharch) |
QString & | insert(qsizetypeposition, QLatin1StringViewstr) |
(since 6.0) QString & | insert(qsizetypeposition, QStringViewstr) |
(since 6.5) QString & (qsizetype position, QLatin1StringView str) | insert(qsetypeposition, QUtf8StringViewstr) |
QString & | insert(qsizetypeposition, const QByteArray&str) |
QString & | insert(qsizetypeposition, const char*str) |
QString & (qsizetype position, const QByteArray &str) | insert(qsizetypeposition, const QChar*unicode, qsizetypesize) |
bool | isEmpty() 常量 |
bool | isLower() 常量 |
bool | isNull() const |
bool | isRightToLeft() const |
bool | isUpper() const |
bool | isValidUtf16() const |
(since 6.0) QString | last(qsizetypen) && |
(since 6.0) QString | last(qsizetypen) const & |
qsizetype | lastIndexOf(const QRegularExpression&re, qsizetypefrom, QRegularExpressionMatch*rmatch= nullptr) const |
qsizetype | lastIndexOf(const QString&str, qsizetypefrom, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(since 6.3) qsizetype | lastIndexOf(QCharch, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(since 6.2) qsizetype | lastIndexOf(QLatin1StringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(since 6.2) qsizetype | lastIndexOf(QStringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
(since 6.2) qsizetype | lastIndexOf(const QRegularExpression&re, QRegularExpressionMatch*rmatch= nullptr) const |
(since 6.2) qsizetype | lastIndexOf(const QString&str, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | lastIndexOf(QCharch, qsizetypefrom, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | lastIndexOf(QLatin1StringViewstr, qsizetypefrom, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
qsizetype | lastIndexOf(QStringViewstr、qsizetypefrom、Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
QString | left(qsizetypen) && |
QString | left(qsizetypen) const & & |
QString | leftJustified(qsizetypewidth, QCharfill= u' ', booltruncate= false) const |
qsizetype | length() 常量 |
(since 6.0) int | localeAwareCompare(QStringViewother) const |
(const QString &other) | localeAwareCompare(const QString&other) const |
(since 6.8) qsizetype | max_size() const |
QString | mid(qsizetypeposition, qsizetypen= -1) && |
QString | mid(qsizetypeposition, qsizetypen= -1) const & |
QString | normalized(QString::NormalizationFormmode, QChar::UnicodeVersionversion= QChar::Unicode_Unassigned) const |
QString & | prepend(const QString&str) |
QString & | prepend(QCharch) |
QString & | prepend(QLatin1StringViewstr) |
(since 6.0) QString & | prepend(QStringViewstr) |
(since 6.5) QString & | prepend(QUtf8StringViewstr) |
QString & | prepend(const QByteArray&ba) |
QString & | prepend(const char*str) |
QString & | prepend(const QChar*str, qsizetypelen) |
void | push_back(const QString&other) |
void | push_back(QCharch) |
void | push_front(const QString&other) |
void | push_front(QCharch) |
QString::reverse_iterator | rbegin() |
QString::const_reverse_iterator | rbegin()常量 |
QString & | remove(const QRegularExpression&re) |
QString & | remove(QCharch, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | remove(const QString&str, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | remove(qsizetypeposition, qsizetypen) |
QString & | remove(QLatin1StringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
(since 6.5) QString & | removeAt(qsizetypepos) |
(since 6.5) QString & | removeFirst() |
(since 6.1) QString & | removeIf(谓词pred) |
(since 6.5) QString & | removeLast() |
QString::reverse_iterator | rend() |
QString::const_reverse_iterator | rend() 常量 |
QString | repeated(qsizetypetimes) const |
QString & | replace(qsizetypeposition, qsizetypen, const QString&after) |
QString & | replace(const QRegularExpression&re, const QString&after) |
QString & | replace(QCharbefore, QCharafter, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(QCharc, QLatin1StringViewafter, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(QCharch, const QString&after, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(QLatin1StringViewbefore, QLatin1StringViewafter, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(QLatin1StringViewbefore, const QString&after, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(const QString&before, QLatin1StringViewafter, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(const QString&before, const QString&after, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString & | replace(qsizetypeposition, qsizetypen, QCharafter) |
QString & | replace(qsizetypeposition, qsizetypen, const QChar*after, qsizetypealen) |
QString & | replace(const QChar*before, qsizetypeblen, const QChar*after, qsizetypealen, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
void | reserve(qsizetypesize) |
void | resize(qsizetypesize) |
void | resize(qsizetypenewSize, QCharfillChar) |
(since 6.8) void | resizeForOverwrite(qsizetypesize) |
QString | right(qsizetypen) && |
QString | right(qsizetypen) const & |
QString | rightJustified(qsizetypewidth, QCharfill= u' ', booltruncate= false) const |
QString | section(QCharsep, qsizetypestart, qsizetypeend= -1, QString::SectionFlagsflags= SectionDefault) const |
QString | section(const QRegularExpression&re, qsizetypestart, qsizetypeend= -1, QString::SectionFlagsflags= SectionDefault) const |
QString | section(const QString&sep, qsizetypestart, qsizetypeend= -1, QString::SectionFlagsflags= SectionDefault) const |
QString & | setNum(intn, intbase= 10) |
QString & | setNum(longn, intbase= 10) |
QString & | setNum(qlonglongn, intbase= 10) |
QString & | setNum(qullong longn, intbase= 10) |
QString & | setNum(shortn, intbase= 10) |
QString & | setNum(uintn, intbase= 10) |
QString & | setNum(ulongn, intbase= 10) |
QString & | setNum(ushortn, intbase= 10) |
QString & | setNum(doublen, charformat= 'g', intprecision= 6) |
QString & (float n, char format = 'g', int precision = 6) | setNum(浮点数n,字符格式= 'g',int精度= 6) |
QString & | setRawData(const QChar*unicode, qsizetypesize) |
QString & (const QChar *unicode, qsizetype size) | setUnicode(const QChar*unicode, qsizetypesize) |
QString & (const QChar *unicode, qsizetype size) | setUtf16(const ushort*unicode, qsizetypesize) |
void | shrink_to_fit() |
QString | simplified()常量 |
qsizetype | size() const |
(since 6.8) QString & | slice(qsizetypepos, qsizetypen) |
(since 6.8) QString & | slice(qsizetypepos) |
(since 6.0) QString | sliced(qsizetypepos, qsizetypen) && |
(since 6.0) QString | sliced(qsizetypepos, qsizetypen) const & |
(since 6.0) QString | sliced(qsizetypepos) && |
(since 6.0) QString | sliced(qsizetypepos) const & |
QStringList | split(const QString&sep, Qt::SplitBehaviorbehavior= Qt::KeepEmptyParts, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
QStringList | split(const QRegularExpression&re, Qt::SplitBehaviorbehavior= Qt::KeepEmptyParts) const |
QStringList | split(QCharsep, Qt::SplitBehaviorbehavior= Qt::KeepEmptyParts, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
void | squeeze() |
bool | startsWith(const QString&s, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | startsWith(QCharc, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | startsWith(QLatin1StringViews, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
bool | startsWith(QStringViewstr, Qt::CaseSensitivitycs= Qt::CaseSensitive) const |
void | swap(QString&other) |
CFStringRef | toCFString() 常量 |
QString | toCaseFolded() const |
双 | toDouble(bool*ok= nullptr) const |
(since 6.6) emscripten::val | toEcmaString() const |
浮点数 | toFloat(bool*ok= nullptr) const |
QString | toHtmlEscaped()常量 |
int | toInt(bool*ok= nullptr, intbase= 10) const |
QByteArray | toLatin1()常数 |
QByteArray | toLocal8Bit常数 |
长 | toLong(bool*ok= nullptr, intbase= 10) const |
qlonglong | toLongLong(bool*ok= nullptr, intbase= 10) const |
QString | toLower()常量 |
NSString * | toNSString() const |
短 | toShort(bool*ok= nullptr, intbase= 10) const |
std::string | toStdString() const |
std::u16string | toStdU16String() const |
std::u32string | toStdU32String() const |
std::wstring | toStdWString() const |
uint | toUInt(bool*ok= nullptr, intbase= 10) const |
ulong | toULong(bool*ok= nullptr, intbase= 10) const |
qulonglong | toULongLong(bool*ok= nullptr, intbase= 10) const |
ushort | toUShort(bool*ok= nullptr, intbase= 10) const |
QList<uint | toUcs4()常量 |
QString | toUpper常数 |
QByteArray | toUtf8() const |
qsizetype | toWCharArray(wchar_t*array) const |
(since 6.0) 自动 | tokenize(Needle&&sep, Flags...flags) && |
(since 6.0) 自动 | tokenize(Needle&&sep, Flags...flags) const && |
(since 6.0) 自动 | tokenize(Needle&&sep, Flags...flags) const & |
QString | trimmed()常量 |
void | truncate(qsizetypeposition) |
常数 QChar * | unicode()常量 |
const ushort * | utf16()常量 |
(since 6.7) std::u16string_view | operator std::u16string_view() const |
QString & | operator+=(const QString&other) |
QString & | operator+=(QCharch) |
QString & | operator+=(QLatin1StringViewstr) |
(since 6.0) QString & | operator+=(QStringViewstr) |
(since 6.5) QString & | operator+=(QUtf8StringViewstr) |
QString & | operator+=(const QByteArray&ba) |
QString & | operator+=(const char*str) |
QString & | operator=(QString&&other) |
QString & | operator=(const QString&other) |
QString & | operator=(QCharch) |
QString & | operator=(QLatin1StringViewstr) |
QString & (QByteArray &ba) | operator=(const QByteArray&ba) |
QString & | operator=(const char*str) |
QChar & | operator[](qsizetypeposition) |
常量 QChar | operator[](qsizetypeposition) const |
静态公共成员
字符串 | asprintf(const char*cformat, ...) |
int字符串 | compare(const QString&s1, const QString&s2, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
int | compare(QLatin1StringViews1, const QString&s2, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
int | compare(QStringViews1, const QString&s2, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
int | compare(const QString&s1, QLatin1StringViews2, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
int | compare(const QString&s1, QStringViews2, Qt::CaseSensitivitycs= Qt::CaseSensitive) |
QString | fromCFString(CFStringRefstring) |
(since 6.6) QString | fromEcmaString(emscripten::valjsString) |
字符串 | fromLatin1(const char*str, qsizetypesize) |
(since 6.0) QString | fromLatin1(QByteArrayViewstr) |
QString | fromLatin1(const QByteArray&str) |
字符串 | fromLocal8Bit(const char*str, qsizetypesize) |
(since 6.0) QString | fromLocal8Bit(QByteArrayViewstr) |
QString | fromLocal8Bit(const QByteArray&str) |
字符串 | fromNSString(const NSString*string) |
字符串 | fromRawData(const QChar*unicode, qsizetypesize) |
字符串 | fromStdString(const std::string&str) |
QString | fromStdU16String(const std::u16string&str) |
QString | fromStdU32String(const std::u32string&str) |
QString | fromStdWString(const std::wstring&str) |
字符串 | fromUcs4(const char32_t*unicode, qsizetypesize= -1) |
QString | fromUtf8(const char*str, qsizetypesize) |
(since 6.0) QString | fromUtf8(QByteArrayViewstr) |
QString | fromUtf8(const QByteArray&str) |
(since 6.1) QString | fromUtf8(const char8_t*str) |
(since 6.0) QString | fromUtf8(const char8_t*str, qsizetypesize) |
QString | fromUtf16(const char16_t*unicode, qsizetypesize= -1) |
QString | fromWCharArray(const wchar_t*string, qsizetypesize= -1) |
int | localeAwareCompare(const QString&s1, const QString&s2) |
(since 6.0) (const QString &s1, const QString &s2) | localeAwareCompare(QStringViews1, QStringViews2) |
(since 6.8) qsizetype | maxSize() |
QString | number(长n,intbase= 10) |
QString | number(doublen, charformat= 'g', intprecision= 6) |
QString | number(intn,intbase= 10) |
QString | number(qlonglongn, intbase= 10) |
QString | number(qulonglongn, intbase= 10) |
QString | number(uintn, intbase= 10) |
QString | number(ulongn, intbase= 10) |
字符串 | vasprintf(const char*cformat, va_listap) |
相关非成员
(since 6.1) qsizetype | erase(QString &s, const T &t) |
(since 6.1) qsizetype | erase_if(QString &s, Predicate pred) |
bool | operator!=(const QByteArray &lhs, const QString &rhs) |
bool | operator!=(const QString &lhs, const QString &rhs) |
bool | operator!=(const char *const &lhs, const QString &rhs) |
bool | operator!=(const QString &lhs, const QByteArray &rhs) |
bool | operator!=(const QString &lhs, const QLatin1StringView &rhs) |
bool | operator!=(const QString &lhs, const char *const &rhs) |
(since 6.4) QString | operator""_s(const char16_t *str, size_t size) |
QString | operator+(QString &&s1, const QString &s2) |
QString | operator+(const QString &s1, const QString &s2) |
QString | operator+(const QString &s1, const char *s2) |
QString | operator+(const char *s1, const QString &s2) |
bool | operator<(const QByteArray &lhs, const QString &rhs) |
bool | operator<(const char *const &lhs, const QString &rhs) |
bool | operator<(const QLatin1StringView &lhs, const QString &rhs) |
bool | operator<(const QString &lhs, const QByteArray &rhs) |
bool | operator<(const QString &lhs, const QLatin1StringView &rhs) |
bool | operator<(const QString &lhs, const QString &rhs) |
bool | operator<(const QString &lhs, const char *const &rhs) |
QDataStream & | operator<<(QDataStream &stream, const QString &string) |
bool | operator<=(const QByteArray &lhs, const QString &rhs) |
bool | operator<=(const QString &lhs, const QString &rhs) |
bool | operator<=(const char *const &lhs, const QString &rhs) |
bool | operator<=(const QLatin1StringView &lhs, const QString &rhs) |
bool | operator<=(const QString &lhs, const QByteArray &rhs) |
bool | operator<=(const QString &lhs, const QLatin1StringView &rhs) |
bool | operator<=(const QString &lhs, const char *const &rhs) |
bool | operator==(const QByteArray &lhs, const QString &rhs) |
bool | operator==(const QLatin1StringView &lhs, const QString &rhs) |
bool | operator==(const QString &lhs, const QByteArray &rhs) |
bool | operator==(const QString &lhs, const QLatin1StringView &rhs) |
bool | operator==(const QString &lhs, const QString &rhs) |
bool | operator==(const QString &lhs, const char *const &rhs) |
bool | operator==(const char *const &lhs, const QString &rhs) |
bool | operator>(const QByteArray &lhs, const QString &rhs) |
bool | operator>(const QString &lhs, const QString &rhs) |
bool | operator>(const char *const &lhs, const QString &rhs) |
bool | operator>(const QLatin1StringView &lhs, const QString &rhs) |
bool | operator>(const QString &lhs, const QByteArray &rhs) |
bool | operator>(const QString &lhs, const QLatin1StringView &rhs) |
bool | operator>(const QString &lhs, const char *const &rhs) |
bool | operator>=(const QByteArray &lhs, const QString &rhs) |
bool | operator>=(const QString &lhs, const QString &rhs) |
bool | operator>=(const char *const &lhs, const QString &rhs) |
bool | operator>=(const QLatin1StringView &lhs, const QString &rhs) |
bool | operator>=(const QString &lhs, const QByteArray &rhs) |
bool | operator>=(const QString &lhs, const QLatin1StringView &rhs) |
bool | operator>=(const QString &lhs, const char *const &rhs) |
QDataStream & | operator>>(QDataStream &stream, QString &string) |
宏
QStringLiteral(str) | |
QT_NO_CAST_FROM_ASCII | |
QT_NO_CAST_TO_ASCII | |
QT_RESTRICTED_CAST_FROM_ASCII | |
const char * | qPrintable(const QString &str) |
const wchar_t * | qUtf16Printable(const QString &str) |
const char * | qUtf8Printable(const QString &str) |
详细说明
QString 存储由 16 位QChars 组成的字符串,其中每个QChar 对应一个 UTF-16 编码单元。(代码值高于 65535 的 Unicode 字符使用代理对存储,即两个连续的QChars)。
统一码是一种国际标准,支持当今使用的大多数书写系统。它是 US-ASCII(ANSI X3.4-1986)和 Latin-1(ISO 8859-1)的超集,所有 US-ASCII/Latin-1 字符都可在相同的码位上使用。
在幕后,QString 使用隐式共享(写时复制)来减少内存使用量,避免不必要的数据复制。这也有助于减少存储 16 位字符而非 8 位字符的固有开销。
除 QString 外,Qt XML 还提供了QByteArray 类来存储原始字节和传统的 8 位"(0)"结尾字符串。在大多数情况下,QString 是您要使用的类。它在整个 Qt API 中都有使用,而且 Unicode 支持可确保您的应用程序易于翻译,如果您想扩大应用程序的市场的话。QByteArray 适用于两个突出的情况,一是需要存储原始二进制数据,二是内存节约至关重要(如在嵌入式系统中)。
初始化字符串
初始化 QString 的一种方法是向其构造函数传递const char *
。例如,下面的代码创建了一个大小为 5 的 QString,其中包含数据 "Hello":
QString str = "Hello";
QString 使用fromUtf8() 函数将const char *
数据转换为 Unicode。
在所有接受const char *
参数的 QString 函数中,const char *
都被解释为一个经典的 C-style'\\0'
结尾字符串。除非函数名称中明确指出使用其他编码,否则这些const char *
参数都被假定为使用 UTF-8 编码。
您也可以以QChars 数组的形式提供字符串数据:
QString 会对QChar 数据进行深度复制,因此您可以在以后修改它,而不会产生副作用。您可以使用QStringView 或QString::fromRawData() 来避免深度拷贝字符数据。
另一种方法是使用resize() 设置字符串的大小,并按字符初始化数据。QString 使用基于 0 的索引,就像 C++ 数组一样。要访问特定索引位置上的字符,可以使用operator[]() 。对于非const
字符串,operator[]() 会返回一个字符的引用,该引用可用于赋值的左侧。例如
QString str; str.resize(4); str[0] = QChar('U'); str[1] = QChar('n'); str[2] = QChar(0x10e3); str[3] = QChar(0x03a3);
对于只读访问,另一种语法是使用at() 函数:
QStringstr;for(qsizetype i= 0; i<str.size();++i) {if(str.at(i)>=QChar('a')&&str.at(i)<=QChar('f')) qDebug() << "Found character in range [a-f]"; }
at() 函数比operator[]() 更快,因为它不会导致深度复制。或者,使用first()、last() 或sliced() 函数一次提取几个字符。
QString 可以嵌入 "0 "字符(QChar::Null )。size() 函数总是返回整个字符串的大小,包括嵌入的"\0 "字符。
调用resize() 函数后,新分配的字符将具有未定义的值。要将字符串中的所有字符设置为特定值,请使用fill() 函数。
QString 提供了数十种重载,旨在简化字符串的使用。例如,如果您想比较一个 QString 和一个字符串字面量,您可以编写这样的代码,它就会像预期的那样工作:
QString str; if (str == "auto" || str == "extern" || str == "static" || str == "register") { // ... }
您还可以通过调用 QString(const char *) 构造函数,将字符串字面量传递给将 QStrings 作为参数的函数。同样,您也可以使用qPrintable() 宏将 QString 传递给以const char *
为参数的函数,该宏将以const char *
的形式返回给定的 QString。这等同于调用 <QString>。toLocal8Bit().constData().
操作字符串数据
QString 提供了以下用于修改字符数据的基本函数:append(),prepend(),insert(),replace(), 和remove() 。例如
QString str = "and"; str.prepend("rock "); // str == "rock and" str.append(" roll"); // str == "rock and roll" str.replace(5, 3, "&"); // str == "rock & roll"
在上面的示例中,replace() 函数的前两个参数是开始替换的位置和应替换的字符数。
当数据修改函数增加字符串的大小时,QString 可能会重新分配存放数据的内存。当这种情况发生时,QString 会扩充比它立即需要的更多的空间,以便在字符串的大小显著增加之前有空间进一步扩充而无需重新分配。
insert(),remove() 和replace() 函数(当用不同大小的字符串替换子字符串时)对于大字符串来说可能会很慢(线性时间),因为它们需要将字符串中的许多字符在内存中移动至少一个位置。
如果您正在逐步创建一个 QString,并预先知道该 QString 大约包含多少个字符,您可以调用reserve() 要求 QString 预先分配一定量的内存。您也可以调用capacity() 来了解 QString 实际分配了多少内存。
QString 提供了STL 风格的迭代器(QString::const_iterator 和QString::iterator )。实际上,迭代器在使用 C++ 标准库提供的通用算法时非常方便。
注意: 当调用 QString 的任何非const
方法时,QString 上的迭代器和对其中单个字符的引用不能依赖于保持有效。在调用非const
方法后访问此类迭代器或引用会导致未定义的行为。当需要类似迭代器功能的稳定性时,应使用索引而不是迭代器,因为索引与 QString 的内部状态无关,因此不会失效。
注意: 由于隐式共享,在给定 QString 上使用的第一个非const
运算符或函数可能会导致它在内部对其数据执行深度复制。这将使字符串上的所有迭代器以及对字符串中单个字符的引用失效。请勿在保留迭代器的同时调用非const 函数。访问已失效的迭代器或引用会导致未定义的行为。有关详细信息,请参阅 "隐式共享迭代器问题"部分。
经常需要删除或简化字符串中可见字符之间的间距。构成字符间距的字符是isSpace() 返回true
的字符,如简单空格' '
、水平制表符'\\t'
和换行符'\\n'
。要获取一个字符串的副本,但不包括字符串开始和结束时的任何间距,请使用trimmed() 。要将字符串中的每个间距字符序列替换为简单空格' '
,请使用simplified() 。
如果要查找 QString 中出现的所有特定字符或子串,请使用indexOf() 或lastIndexOf() 函数。前者向前搜索,后者向后搜索。前者向前搜索,后者向后搜索。前者和后者都可以告诉一个索引位置,从该位置开始搜索。如果找到字符或子串,则返回该字符或子串的索引位置;否则,返回-1。例如,下面是一个查找特定子串所有出现位置的典型循环:
QStringstr= "We must be <b>bold</b>, very <b>bold</b>"; qsizetype j= 0;while((j=str.indexOf("<b>",j))!=-1) { qDebug() << "Found <b> tag at index position" << j; ++j; }
QString 提供了许多将数字转换为字符串和将字符串转换为数字的函数。请参阅arg() 函数、setNum() 函数、number() 静态函数,以及toInt(),toDouble() 和类似函数。
要获取字符串的大写或小写版本,请使用toUpper() 或toLower()。
字符串列表由QStringList 类处理。您可以使用split() 函数将一个字符串拆分成一个字符串列表,也可以使用QStringList::join() 函数将一个字符串列表连接成一个带有可选分隔符的字符串。通过选择字符串列表中包含特定子串或匹配特定QRegularExpression 的条目,可以从字符串列表中获取过滤列表。详见QStringList::filter() 。
查询字符串数据
要查看 QString 是否以特定子字符串开始或结束,请使用startsWith() 或endsWith() 。要检查 QString 是否包含特定字符或子串,请使用contains() 函数。要了解特定字符或子串在字符串中出现的次数,请使用 count()。
要获取指向实际字符数据的指针,请调用data() 或constData()。这些函数会返回一个指向QChar 数据开头的指针。在调用 QString 的非const
函数之前,该指针保证保持有效。
比较字符串
可以使用重载操作符(如operator<(),operator<=(),operator==(),operator>=() 等)对 QString 进行比较。比较完全基于两个字符串的词典顺序,将其视为 UTF-16 代码单元的序列。它的速度非常快,但并不符合人类的期望;如果有这样的比较功能,QString::localeAwareCompare() 函数通常是对用户界面字符串进行排序的更好选择。
当 Qt 与 ICU 库链接时(通常是这样),会使用 ICU 库的本地识别排序。否则,将使用特定平台的解决方案:
- 在 Windows 上,localeAwareCompare() 使用当前用户的本地语言,如Control Panel 的regional 和language 选项部分所设置。
- 在 macOS 和 iOS 上,localeAwareCompare() 根据International preferences 面板中的Order for sorted lists 设置进行比较。
- 在其他类 Unix 系统上,比较结果会回到系统库的
strcoll()
。
编码字符串数据与 QString 之间的转换
QString 提供了以下函数,可将const char *
版本的字符串返回为QByteArray :toUtf8()、toLatin1()和toLocal8Bit()。
- toLatin1() 返回拉丁-1(ISO 8859-1)编码的 8 位字符串。
- toUtf8() 返回 UTF-8 编码的 8 位字符串。UTF-8 是 US-ASCII (ANSI X3.4-1986) 的超集,通过多字节序列支持整个 Unicode 字符集。
- toLocal8Bit() 使用系统的本地编码返回一个 8 位字符串。这与 Unix 系统上的toUtf8() 相同。
要从这些编码之一进行转换,QString 提供了fromLatin1(),fromUtf8() 和fromLocal8Bit().QStringEncoder 和QStringDecoder 类支持其他编码。
如上所述,QString 提供了大量函数和操作符,使const char *
字符串之间的互操作变得简单。但这一功能也是一把双刃剑:如果所有字符串都是 US-ASCII 或 Latin-1,它将使 QString 使用起来更方便,但始终存在使用错误的 8 位编码从const char *
进行隐式转换或向 进行隐式转换的风险。为了尽量减少这些风险,您可以通过定义以下一些预处理器符号来关闭这些隐式转换:
- QT_NO_CAST_FROM_ASCII 禁用从 C 字符串字面量和指针到 Unicode 的自动转换。
- QT_RESTRICTED_CAST_FROM_ASCII 允许从 C 字符和字符数组自动转换,但禁止从字符指针自动转换到 Unicode。
- QT_NO_CAST_TO_ASCII 禁止从 QString 到 C 字符串的自动转换。
因此,您需要明确调用fromUtf8(),fromLatin1(), 或fromLocal8Bit() 从 8 位字符串构造 QString,或使用轻量级的QLatin1StringView 类。例如
QString url = "https://www.unicode.org/"_L1;
同样,您必须明确调用toLatin1(),toUtf8(), 或toLocal8Bit() 将 QString 转换为 8 位字符串。
C 程序员注意事项 |
---|
由于 C++ 的类型系统和 QString隐式共享的事实,QStrings 可能会被当作int s 或其他基本类型。例如QString Widget::boolToString(bool b) { QString result; if (b) result = "True"; else result = "False"; return result; }
|
空字符串和空字符串的区别
由于历史原因,QString 区分了空字符串和空字符串。空字符串是使用 QString 的默认构造函数或通过向构造函数传递nullptr
来初始化的字符串。空字符串是任何大小为 0 的字符串。空字符串总是空的,但空字符串不一定是空的:
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
除了isNull() 之外,所有函数都将空字符串视为空字符串。例如,toUtf8().constData() 返回一个指向空字符串的"(0)"字符的有效指针(而不是nullptr
)。我们建议您始终使用isEmpty() 函数,避免使用isNull() 函数。
数字格式
当QString::arg()'%'
格式指定符包含'L'
locale 限定符,且基数为 10(默认值)时,将使用默认的 locale。可以使用QLocale::setDefault() 进行设置。要对数字的本地化字符串表示进行更精细的控制,请参阅QLocale::toString() 。QString 进行的所有其他数字格式化都遵循 C 语言的数字表示法。
当QString::arg() 对数字应用左填充时,填充字符'0'
会被特殊处理。如果数字是负数,减号会出现在零填充之前。如果字段是本地化的,则使用适合本地化的零字符代替'0'
。对于浮点数,这种特殊处理仅在数字是有限的情况下适用。
浮点格式
在将浮点数(float
或double
)格式化为字符串的成员函数(例如arg() 和number() )中,可以通过选择格式和精度来控制所使用的表示形式,格式和精度的含义与QLocale::toString (double、char、int)相同。
如果选择的格式包含指数,本地化格式将遵循本地对指数中数字的约定。对于非本地化格式,指数显示其符号,并至少包含两位数,必要时用 0 左填充。
更高效的字符串构造
许多字符串在编译时就已知。C++ 字符串字面的 QString 构造函数会复制字符串的内容,并将内容视为 UTF-8。这需要分配内存和重新编码字符串数据,这些操作将在运行时进行。如果在编译时已知道字符串数据,则可以使用QStringLiteral 宏或类似的operator""_s
在编译时创建 QString 的有效载荷。
使用 QString'+'
操作符,可以很容易地从多个子串中构造出复杂的字符串。您经常会写出这样的代码
QString foo; QString type = "long"; foo = "vector<"_L1 + type + ">::iterator"_L1; if (foo.startsWith("(" + type + ") 0x")) ...
这两种字符串构造都没有问题,但也有一些隐藏的低效之处:
首先,重复使用'+'
操作符可能会导致多次内存分配。当连接n 个子串(其中n > 2)时,可能会有多达n - 1 次内存分配器调用。
这些分配可以通过一个内部类QStringBuilder
进行优化。这个类被标记为内部类,没有出现在文档中,因为你不需要在代码中实例化它。它将自动使用,如下所述。如果您想查看该类,请访问src/corelib/tools/qstringbuilder.cpp
。
QStringBuilder
使用表达式模板并重新实现了 操作符,因此当使用 而不是 进行字符串连接时,多个子串连接将被推迟,直到最终结果即将被赋值给一个 QString。此时,已知道最终结果所需的内存量。然后调用'%'
'%'
'+'
一次内存分配器以获得所需的空间,并将子串逐个复制到内存中。
通过内联和减少引用计数(从QStringBuilder
创建的 QString 的引用计数为 1,而QString::append() 需要额外的测试),可以提高效率。
有两种方法可以使用这种改进的字符串构造方法。最直接的方法是在需要使用QStringBuilder
的地方加入它,并在连接字符串时使用'%'
操作符而不是'+'
:
#include <QStringBuilder> QString hello("hello"); QStringView el = QStringView{ hello }.mid(2, 3); QLatin1StringView world("world"); QString message = hello % el % world % QChar('!');
另一种更全面的方法是在编译时定义QT_USE_QSTRINGBUILDER
(将其添加到编译器标志中),这种方法更方便,但不完全兼容源代码。这将使使用'+'
连接字符串的方式与使用QStringBuilder's
'%'
的方式相同。
注: 在启用 QStringBuilder 时,对字符串连接的结果使用自动类型推断(例如使用auto
关键字),将显示该连接确实是 QStringBuilder 专用化的对象:
QString str("QStringBuilder"); // "s" type is deduced as QStringBuilder<...> auto s = "Like hot glue, " % str % " concatenates strings"; // Similarly the return type of this lambda is deduced as QStringBuilder<...> auto concatenateStr = []() { return "Like hot glue, " % str % " concatenates strings"; };
这不会造成任何损害,因为 QStringBuilder 在需要时会隐式转换为 QString。如果不希望这样,就应该指定必要的类型,而不是让编译器推导出来:
QString s = "Like hot glue, " % str % " concatenates strings"; // With a lambda, specify a trailing return type: auto concatenateStr = []() -> QString { return "Like hot glue, " % str % " concatenates strings"; };
最大大小和内存不足条件
QString 的最大大小取决于体系结构。大多数 64 位系统可分配超过 2 GB 的内存,典型限制为 2^63 字节。实际值还取决于管理数据块所需的开销。因此,在 32 位平台上,最大容量为 2 GB 减去开销;在 64 位平台上,最大容量为 2^63 字节减去开销。可存储在 QString 中的元素数是这一最大大小除以QChar 的大小。
当内存分配失败时,如果应用程序在编译时支持异常,则 QString 会抛出std::bad_alloc
异常。Qt 容器中的内存不足是 Qt 抛出异常的唯一情况。如果禁用了异常,那么内存不足就是未定义的行为。
注意: 目标操作系统可能会限制应用程序可分配的内存总量或单个分配的内存大小。这可能会进一步限制 QString 可容纳字符串的大小。减轻或控制这些限制所导致的行为超出了 Qt API 的范围。
另请参阅 fromRawData(),QChar,QStringView,QLatin1StringView, 和QByteArray 。
成员类型文档
QString::ConstIterator
QString::const_iterator 的 Qt-style 同义词。
QString::Iterator
QString::iterator 的 Qt-style 同义词。
enum QString::NormalizationForm
该枚举描述了 Unicode 文本的各种规范化形式。
常量 | 值 | 描述 |
---|---|---|
QString::NormalizationForm_D | 0 | 规范分解 |
QString::NormalizationForm_C | 1 | 规范分解,然后是规范合成 |
QString::NormalizationForm_KD | 2 | 兼容性分解 |
QString::NormalizationForm_KC | 3 | 兼容性分解,然后是规范合成 |
另请参阅 normalized() 和Unicode 标准附件 #15。
枚举 QString::SectionFlag
flags QString::SectionFlags
此枚举指定了可用于影响section() 函数有关分隔符和空字段行为的各个方面的标志。
常量 | 值 | 说明 |
---|---|---|
QString::SectionDefault | 0x00 | 空字段将被计算在内,不包括前导和尾部分隔符,分隔符将区分大小写进行比较。 |
QString::SectionSkipEmpty | 0x01 | 将空字段视为不存在,即不考虑开始和结束。 |
QString::SectionIncludeLeadingSep | 0x02 | 在结果字符串中包含前导分隔符(如果有)。 |
QString::SectionIncludeTrailingSep | 0x04 | 在结果字符串中包含尾部分隔符(如果有)。 |
QString::SectionCaseInsensitiveSeps | 0x08 | 不区分分隔符的大小写。 |
SectionFlags 类型是QFlags<SectionFlag> 的类型定义。它存储 SectionFlag 值的 OR 组合。
另请参见 section().
QString::const_iterator
另请参见 QString::iterator 。
QString::const_pointer
QString::const_pointer 类型定义提供了一个 STL 样式的常指针,指向QString 元素 (QChar)。
QString::const_reference
QString::const_reverse_iterator
另见 QString::reverse_iterator 和QString::const_iterator 。
QString::difference_type
QString::iterator
另请参见 QString::const_iterator 。
QString::pointer
QString::pointer 类型定义提供了一个指向QString 元素的 STL 风格指针 (QChar)。
QString::reference
QString::reverse_iterator
另见 QString::const_reverse_iterator 和QString::iterator 。
QString::size_type
QString::value_type
成员函数文档
返回包含n 字符串最左端字符的子串。
如果知道n 不能出界,请在新代码中使用first() 代替,因为这样速度更快。
如果n 大于或等于size() 或小于零,则返回整个字符串。
另请参阅 first()、last()、startsWith()、chopped()、chop() 和truncate()。
返回包含n 字符串最右边字符的子串。
如果知道n 不能出界,请在新代码中使用last() 代替,因为这样速度更快。
如果n 大于或等于size() 或小于零,则返回整个字符串。
另请参阅 endsWith()、last()、first()、sliced()、chopped()、chop()、truncate() 和slice()。
QString QString::mid(qsizetype position, qsizetype n = -1) &&
QString QString::mid(qsizetype position, qsizetype n = -1) const &
从指定的position 索引开始,返回一个包含n 字符的字符串。
如果知道position 和n 不能出界,请在新代码中使用sliced() 代替,因为这样速度更快。
如果position 索引超过字符串长度,则返回空字符串。如果字符串中从给定的position 开始可用的字符少于n ,或者n 为 -1(默认值),函数将返回从指定的position 开始可用的所有字符。
另请参阅 first()、last()、sliced()、chopped()、chop()、truncate() 和slice()。
[since 6.0]
QString QString::first(qsizetype n) &&
[since 6.0]
QString QString::first(qsizetype n) const &
返回包含此字符串前n 个字符的字符串。
注意: 当n < 0 或n >size() 时,行为未定义。
此函数在 Qt 6.0 中引入。
另请参阅 last()、sliced()、startsWith()、chopped()、chop()、truncate() 和slice()。
[since 6.0]
QString QString::last(qsizetype n) &&
[since 6.0]
QString QString::last(qsizetype n) const &
返回包含此字符串最后n 个字符的字符串。
注意: 当n < 0 或n >size() 时,行为未定义。
此函数在 Qt 6.0 中引入。
另请参阅 first()、sliced()、endsWith()、chopped()、chop()、truncate() 和slice()。
[since 6.0]
QString QString::sliced(qsizetype pos, qsizetype n) &&
[since 6.0]
QString QString::sliced(qsizetype pos, qsizetype n) const &
返回一个字符串,该字符串从pos 位置开始,包含n 个字符。
注意: 当pos < 0、n < 0 或pos +n >size() 时,行为未定义。
QString x = "Nine pineapples"; QString y = x.sliced(5, 4); // y == "pine" QString z = x.sliced(5); // z == "pineapples"
此函数在 Qt 6.0 中引入。
另请参阅 first()、last()、chopped()、chop()、truncate() 和slice() 。
[since 6.0]
QString QString::sliced(qsizetype pos) &&
[since 6.0]
QString QString::sliced(qsizetype pos) const &
这是一个重载函数。
返回一个字符串,其中包含该字符串从pos 位置开始延伸至其结尾的部分。
注意: 当pos < 0 或pos >size() 时,行为未定义。
此函数在 Qt 6.0 中引入。
另请参阅 first()、last()、chopped()、chop()、truncate() 和slice()。
返回包含size() -len 最左字符的字符串。
注意: 如果len 为负数或大于size(),则行为未定义。
另请参阅 endsWith()、first()、last()、sliced()、chop()、truncate() 和slice()。
[static constexpr noexcept, since 6.8]
qsizetype QString::maxSize()
[constexpr noexcept, since 6.8]
qsizetype QString::max_size() const
它返回字符串理论上可容纳的最大元素数。在实践中,受系统可用内存量的限制,这个数字可能会小得多。
此函数在 Qt 6.8 中引入。
template <typename... Args> QString QString::arg(Args &&... args) const
用args 中的相应参数替换该字符串中出现的%N
。参数不分位置:args 的第一个参数用最低的N
替换%N
(全部),args 的第二个参数用次低的N
替换%N
等。
Args
可以由隐式转换为 、 或 的任何内容组成。QString QStringView QLatin1StringView
此外,还支持以下类型:QChar,QLatin1Char 。
另请参阅 QString::arg() 。
[noexcept(...), since 6.0]
template <typename Needle, typename... Flags> auto QString::tokenize(Needle &&sep, Flags... flags) &&
[noexcept(...), since 6.0]
template <typename Needle, typename... Flags> auto QString::tokenize(Needle &&sep, Flags... flags) const &
[noexcept(...), since 6.0]
template <typename Needle, typename... Flags> auto QString::tokenize(Needle &&sep, Flags... flags) const &&
在sep 出现的地方将字符串分割成子串视图,并返回这些字符串的懒序列。
等同于
return QStringTokenizer{std::forward<Needle>(sep), flags...};
等效,只是在编译器未启用 C++17 类模板参数演绎(CTAD)的情况下工作。
关于sep 和flags 如何交互形成结果,请参见QStringTokenizer 。
注意: 虽然此函数返回QStringTokenizer ,但您绝对不应该明确命名其模板参数。如果您可以使用 C++17 类模板参数演绎法(CTAD),您可以编写
QStringTokenizer result = sv.tokenize(sep);
(不带模板参数)。如果不能使用 C++17 CTAD,则必须只将返回值存储在auto
变量中:
auto result = sv.tokenize(sep);
这是因为QStringTokenizer 的模板参数与返回它们的特定tokenize() 重载有非常微妙的依赖关系,而且它们通常与用于分隔符的类型不对应。
此函数在 Qt 6.0 中引入。
注意: 当noexcept(qTokenize(std::declval<QString>(), std::forward<Needle>(needle), flags...))
是true
时,(1) 是 noexcept。
注: (2) 在noexcept(qTokenize(std::declval<const QString &>(), std::forward<Needle>(needle), flags...))
是true
时为 noexcept。
注: (3) 在noexcept(qTokenize(std::declval<const QString>(), std::forward<Needle>(needle), flags...))
是true
时为 noexcept。
另请参见 QStringTokenizer 和qTokenize()。
[constexpr noexcept]
QString::QString()
构造一个空字符串。空字符串也被视为空字符串。
另请参阅 isEmpty(),isNull() 和Distinction Between Null and Empty Strings 。
QString::QString(QChar ch)
构造大小为 1 的字符串,其中包含字符ch 。
QString::QString(QLatin1StringView str)
构造由str 查看的 Latin-1 字符串的副本。
另请参见 fromLatin1().
QString::QString(const QByteArray &ba)
构造一个用字节数组ba 初始化的字符串。使用fromUtf8() 将给定的字节数组转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该构造函数。例如,如果您想确保所有用户可见字符串都通过QObject::tr() 转换,这将非常有用。
注意: 字节数组中的任何空('\0')字节都将包含在该字符串中,并转换为 Unicode 空字符 (U+0000)。这种行为与 Qt 5.x 不同。
另请参阅 fromLatin1()、fromLocal8Bit() 和fromUtf8()。
QString::QString(const char *str)
构造一个字符串,初始化为 8 位字符串str 。使用fromUtf8() 函数将给定的 const char 指针转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该构造函数。例如,如果您想确保所有用户可见字符串都通过QObject::tr() 转换,这将非常有用。
注意: 定义QT_RESTRICTED_CAST_FROM_ASCII 也会禁用该构造函数,但会启用QString(const char (&ch)[N])
构造函数。在这种情况下,使用非字面输入、内嵌 NUL 字符或非 7 位字符的输入都是未定义的。
另请参阅 fromLatin1()、fromLocal8Bit() 和fromUtf8()。
[since 6.1]
QString::QString(const char8_t *str)
构造一个以 UTF-8 字符串str 进行初始化的字符串。使用fromUtf8() 函数将给定的 const char8_t 指针转换为 Unicode。
该函数在 Qt 6.1 中引入。
另请参阅 fromLatin1()、fromLocal8Bit() 和fromUtf8()。
[explicit]
QString::QString(const QChar *unicode, qsizetype size = -1)
用QChar 数组unicode 的前size 个字符初始化构造一个字符串。
如果unicode 为 0,则构造一个空字符串。
如果size 为负数,则假定unicode 指向一个以'\0'结束的数组,其长度由动态决定。终止的空字符不被视为字符串的一部分。
QString 会深度复制字符串数据。unicode 数据被原样复制,如果存在字节序号,则保留字节序号。
另请参阅 fromRawData().
QString::QString(qsizetype size, QChar ch)
以给定的size 构造字符串,每个字符都设置为ch 。
另请参阅 fill() 。
[noexcept]
QString::QString(const QString &other)
构造other 的副本。
由于 QString 是隐式共享的,因此该操作耗时不变。这使得从函数返回 QString 的速度非常快。如果共享实例被修改,它将被复制(写时复制),这需要线性时间。
另请参见 operator=()。
[noexcept]
QString::QString(QString &&other)
Move- 构造一个 QString 实例,使其指向other 所指向的同一对象。
[noexcept]
QString::~QString()
销毁字符串。
QString &QString::append(const QString &str)
将字符串str 追加到该字符串的末尾。
举例说明:
这与使用insert() 函数相同:
x.insert(x.size(), y);
append() 函数通常非常快(恒定时间),因为QString 在字符串数据的末尾预分配了额外空间,因此每次都无需重新分配整个字符串即可增长。
另请参阅 operator+=()、prepend() 和insert()。
QString &QString::append(QChar ch)
此函数重载 append()。
将字符ch 追加到该字符串。
QString &QString::append(QLatin1StringView str)
此函数重载 append()。
将str 查看到的 Latin-1 字符串追加到此字符串。
[since 6.0]
QString &QString::append(QStringView v)
此函数重载 append()。
将给定的字符串视图v 追加到此字符串,并返回结果。
此函数在 Qt 6.0 中引入。
[since 6.5]
QString &QString::append(QUtf8StringView str)
此函数重载 append()。
将 UTF-8 字符串视图str 追加到此字符串。
此函数在 Qt 6.5 中引入。
QString &QString::append(const QByteArray &ba)
此函数重载 append()。
将字节数组ba 追加到此字符串。使用fromUtf8() 函数将给定的字节数组转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此函数。例如,如果您想确保所有用户可见字符串都经过QObject::tr() 处理,这将非常有用。
QString &QString::append(const char *str)
此函数重载 append()。
将字符串str 追加到此字符串。使用fromUtf8() 函数将给定的 const char 指针转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 禁用此函数。例如,如果您想确保所有用户可见字符串都通过QObject::tr() 转换,这将非常有用。
QString &QString::append(const QChar *str, qsizetype len)
此函数重载 append()。
将QChar 数组str 中的len 字符追加到此字符串中。
QString QString::arg(const QString &a, int fieldWidth = 0, QChar fillChar = u' ') const
返回该字符串的副本,其中最低编号的位置标记由字符串a 代替,即%1
,%2
, ......,%99
。
fieldWidth 指定参数 占用的最小空间。如果 需要的空间小于 ,则在 中填充字符 。如果 为正数,则文本右对齐。负数 则产生左对齐文本。a a fieldWidth fieldWidth fillChar fieldWidth fieldWidth
本例展示了如何创建status
字符串,用于在处理文件列表时报告进度:
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);
首先,arg(i)
替换%1
。然后,arg(total)
替换%2
。最后,arg(fileName)
替换%3
。
与asprintf() 相比,使用 arg() 的一个好处是,如果应用程序的字符串被翻译成其他语言,编号位置标记的顺序可能会改变,但每个 arg() 仍会替换编号最低的未替换位置标记,无论它出现在哪里。此外,如果位置标记%i
在字符串中出现不止一次,arg() 将替换所有位置标记。
如果没有剩余的未替换位置标记,则会输出警告信息,且结果未定义。位置标记数字范围必须在 1 到 99 之间。
QString QString::arg(QChar a, int fieldWidth = 0, QChar fillChar = u' ') const
该函数重载了 arg()。
QString QString::arg(QLatin1StringView a, int fieldWidth = 0, QChar fillChar = u' ') const
这是一个重载函数。
返回该字符串的副本,其中最低编号的位置标记由a 查看的 Latin-1 字符串替换,即%1
,%2
, ......,%99
。
fieldWidth 指定 占用的最小空间。如果 需要的空间小于 ,则在 中填充字符 。如果 为正数,则文本右对齐。负数 则产生左对齐文本。a a fieldWidth fieldWidth fillChar fieldWidth fieldWidth
与asprintf() 相比,使用 arg() 的一个好处是,如果应用程序的字符串被翻译成其他语言,编号位置标记的顺序可能会改变,但每个 arg() 仍会替换编号最低但未被替换的位置标记,无论它出现在哪里。此外,如果位置标记%i
在字符串中出现不止一次,arg() 将替换所有位置标记。
如果没有剩余的未替换的位置标记,则会打印一条警告信息,并且结果是未定义的。位置标记数字范围必须在 1 到 99 之间。
QString QString::arg(QStringView a, int fieldWidth = 0, QChar fillChar = u' ') const
这是一个重载函数。
返回该字符串的副本,其中最低编号的位置标记由字符串a 代替,即%1
,%2
, ......,%99
。
fieldWidth 指定 应占用的最小空间。如果 所需的空间小于 ,则用字符 填充到 。如果 为正数,则文本右对齐。负数 则产生左对齐文本。a a fieldWidth fillChar fieldWidth fieldWidth fieldWidth
本例展示了如何创建status
字符串,用于在处理文件列表时报告进度:
int i; // current file's number int total; // number of files to process QStringView fileName; // current file's name QString status = QString("Processing file %1 of %2: %3") .arg(i).arg(total).arg(fileName);
首先,arg(i)
替换%1
。然后,arg(total)
替换%2
。最后,arg(fileName)
替换%3
。
与asprintf() 相比,使用 arg() 的一个优势是,如果应用程序的字符串被翻译成其他语言,编号位置标记的顺序可能会改变,但每个 arg() 仍会替换编号最低的未替换位置标记,无论它出现在哪里。此外,如果位置标记%i
在字符串中出现不止一次,arg() 将替换所有位置标记。
如果没有剩余的未替换的位置标记,则会打印一条警告信息,并且结果是未定义的。位置标记数字范围必须在 1 到 99 之间。
QString QString::arg(char a, int fieldWidth = 0, QChar fillChar = u' ') const
该函数重载了 arg()。
a 参数被解释为 Latin-1 字符。
QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
a 参数以base 为基数,默认为 10,且必须介于 2 和 36 之间。对于 10 以外的基数,a 将被视为无符号整数。
fieldWidth 指定 填充字符 的最小空间。正值表示文本右对齐,负值表示文本左对齐。a fillChar
%"后可以跟一个 "L",在这种情况下,序列将被替换为a 的本地化表示。转换使用QLocale::setDefault() 设置的默认语言。如果未指定默认语言,则使用系统语言。如果base 不是 10,'L'标志将被忽略。
QString str; 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"
另请参见 Number Formats 。
QString QString::arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
fieldWidth 指定 填充字符 的最小空间大小。正值表示文本右对齐,负值表示文本左对齐。a fillChar
a 参数以给定的base 表示,默认值为 10,必须介于 2 和 36 之间。
%"后可以跟一个 "L",在这种情况下,序列将被替换为a 的本地化表示。转换使用默认的本地化表示。默认区域设置由应用程序启动时的系统区域设置决定。可以使用QLocale::setDefault() 进行更改。如果base 不是 10,"L "标志将被忽略。
QString str; 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"
另请参阅 Number Formats 。
QString QString::arg(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
fieldWidth 指定 填充字符 的最小空格数。正值表示文本右对齐,负值表示文本左对齐。a fillChar
base 参数指定将整数a 转换为字符串时使用的基数。基数必须在 2 到 36 之间,其中 8 表示八进制数,10 表示十进制数,16 表示十六进制数。
另请参阅 Number Formats 。
QString QString::arg(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
fieldWidth 指定 填充字符 的最小空间大小。正值表示文本右对齐,负值表示文本左对齐。a fillChar
base 参数指定将整数a 转换为字符串时使用的基数。base 必须介于 2 和 36 之间,其中 8 表示八进制数,10 表示十进制数,16 表示十六进制数。
另请参阅 Number Formats 。
QString QString::arg(short a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
fieldWidth 指定 填充字符 的最小空间大小。正值表示文本右对齐,负值表示文本左对齐。a fillChar
base 参数指定将整数a 转换为字符串时使用的基数。基数必须在 2 到 36 之间,其中 8 表示八进制数,10 表示十进制数,16 表示十六进制数。
另请参阅 Number Formats 。
QString QString::arg(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
base 参数用于指定将整数a 转换为字符串时使用的基数。基数必须在 2 和 36 之间。
另请参阅 Number Formats 。
QString QString::arg(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
fieldWidth 指定 填充字符 的最小空格数。正值表示文本右对齐,负值表示文本左对齐。a fillChar
base 参数指定将整数a 转换为字符串时使用的基数。基数必须在 2 到 36 之间,其中 8 表示八进制数,10 表示十进制数,16 表示十六进制数。
另请参阅 Number Formats 。
QString QString::arg(ushort a, int fieldWidth = 0, int base = 10, QChar fillChar = u' ') const
该函数重载了 arg()。
fieldWidth 指定 填充字符 的最小空间大小。正值表示文本右对齐,负值表示文本左对齐。a fillChar
base 参数指定将整数a 转换为字符串时使用的基数。基数必须在 2 到 36 之间,其中 8 表示八进制数,10 表示十进制数,16 表示十六进制数。
另请参阅 Number Formats 。
QString QString::arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = u' ') const
该函数重载了 arg()。
参数a 将根据指定的format 和precision 格式化。详见Floating-point Formats 。
fieldWidth 指定 填充字符 的最小空格。正值表示文本右对齐,负值表示文本左对齐。a fillChar
double d = 12.34; QString str = QString("delta: %1").arg(d, 0, 'E', 3); // str == "delta: 1.234E+01"
另请参阅 QLocale::toString(),QLocale::FloatingPointPrecisionOption, 和Number Formats 。
[static]
QString QString::asprintf(const char *cformat, ...)
通过格式字符串cformat 和任意参数列表安全地创建格式化字符串。
格式字符串支持标准 C++ 库中 printf() 提供的转换规范、长度修饰符和标志。cformat 字符串和%s
参数必须是 UTF-8 编码。
注意: %lc
转义序列需要一个char16_t
类型的 unicode 字符,或ushort
(由QChar::unicode() 返回)。%ls
转义序列希望得到一个指向零端数组的指针,该数组包含类型为char16_t
或 ushort 的 unicode 字符(由QString::utf16() 返回)。这与标准 C++ 库中的 printf() 不一致,标准 C++ 库中的 printf() 定义%lc
打印 wchar_t,%ls
打印wchar_t*
,在wchar_t
的大小不是 16 位的平台上还可能产生编译器警告。
警告: 我们不建议在新的 Qt 代码中使用 QString::asprintf()。相反,可以考虑使用QTextStream 或arg(),这两种字符串都能无缝支持 Unicode 字符串,而且类型安全。下面是一个使用QTextStream 的示例:
QString result; QTextStream(&result) << "pi = " << 3.14; // result == "pi = 3.14"
对于translations ,尤其是当字符串包含多个转义序列时,应考虑使用arg() 函数。这允许翻译器控制替换的顺序。
另请参见 arg()。
[since 6.6]
QString &QString::assign(QAnyStringView v)
用v 的副本替换此字符串的内容,并返回此字符串的引用。
该字符串的大小等于v 的大小,并通过v.toString()
转换为 UTF-16 格式。但与QAnyStringView::toString() 不同的是,该函数仅在估计的大小超过该字符串的容量或该字符串是共享的情况下分配内存。
此函数在 Qt 6.6 中引入。
另请参见 QAnyStringView::toString().
[since 6.6]
template <typename InputIterator, QString::if_compatible_iterator<InputIterator> = true> QString &QString::assign(InputIterator first, InputIterator last)
用迭代器范围 [first,last) 中元素的副本替换此字符串的内容,并返回此字符串的引用。
此字符串的大小等于范围 [first,last) 中元素的解码长度,但不必与范围本身的长度相同,因为此函数会将输入字符集透明地重新编码为 UTF-16。
只有当范围中的元素数量,或者对于非 UTF-16 编码的输入,结果字符串的最大可能大小超过此字符串的容量,或者此字符串是共享的,此函数才会分配内存。
注意: 只有当InputIterator
满足LegacyInputIterator的要求,且InputIterator
的value_type
是以下字符类型之一时,此函数重载才会参与重载解析:
- QChar
- QLatin1Char
char
unsigned char
signed char
char8_t
char16_t
- (在 Windows 等平台上为 16 位类型)。
wchar_t
char32_t
注意: 如果任一参数是进入 *this 的迭代器,或 [first,last) 不是有效范围,则行为未定义。
此函数在 Qt 6.6 中引入。
[since 6.6]
QString &QString::assign(qsizetype n, QChar c)
用n 复制c 替换此字符串的内容,并返回此字符串的引用。
该字符串的大小等于n ,且必须是非负数。
只有在n 超过此字符串的容量或此字符串是共享的情况下,此函数才会分配内存。
此函数在 Qt 6.6 中引入。
另请参阅 fill().
const QChar QString::at(qsizetype position) const
返回字符串中给定索引position 处的字符。
position 必须是字符串中的有效索引位置(即 0 <=position <size() )。
另请参阅 operator[]()。
QChar &QString::back()
返回字符串中最后一个字符的引用。与operator[](size() - 1)
相同。
提供此函数是为了与 STL 兼容。
警告: 在空字符串上调用此函数会导致未定义的行为。
另请参阅 front()、at() 和operator[]()。
QChar QString::back() const
返回字符串中的最后一个字符。与at(size() - 1)
相同。
提供此函数是为了与 STL 兼容。
警告: 在空字符串上调用此函数会产生未定义的行为。
另请参阅 front()、at() 和operator[]()。
QString::iterator QString::begin()
返回指向字符串中第一个字符的STL 样式迭代器。
警告: 返回的迭代器会在分离或修改QString 时失效。
另请参阅 constBegin() 和end()。
QString::const_iterator QString::begin() const
该函数重载 begin()
qsizetype QString::capacity() const
返回在不强制重新分配的情况下字符串可存储的最大字符数。
该函数的唯一目的是提供一种微调QString 内存使用情况的方法。一般来说,您很少需要调用此函数。如果想知道字符串中有多少个字符,请调用size() 。
注意: 静态分配的字符串即使不是空的,也会报告容量为 0。
注意: 已分配内存块中的空闲空间位置是未定义的。换句话说,不应假设空闲内存总是位于初始化元素之后。
QString::const_iterator QString::cbegin() const
返回指向字符串中第一个字符的 ConstSTL 样式迭代器。
警告: 返回的迭代器会在分离或修改QString 时失效。
QString::const_iterator QString::cend() const
返回一个指向字符串最后一个字符之后的 ConstSTL 样式迭代器。
警告: 返回的迭代器会在分离或修改QString 时失效。
void QString::chop(qsizetype n)
从字符串末尾删除n 字符。
如果n 大于或等于size() ,则结果为空字符串;如果n 为负数,则相当于传递 0。
示例
QString str("LOGOUT\r\n"); str.chop(2); // str == "LOGOUT"
如果要删除字符串开头的字符,请使用remove() 代替。
另请参阅 truncate()、resize()、remove() 和QStringView::chop()。
void QString::clear()
清除字符串内容并使其为空。
[static noexcept]
int QString::compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
将字符串s1 与字符串s2 进行比较,如果s1 小于s2 ,则返回一个负整数;如果大于s2 ,则返回一个正整数;如果两者相等,则返回 0。
如果cs 是Qt::CaseSensitive (默认值),则比较区分大小写;否则比较不区分大小写。
大小写敏感比较完全基于字符的 Unicode 数值,速度非常快,但并不符合人类的期望。请考虑使用localeAwareCompare() 对用户可见字符串进行排序。
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
注: 该函数对空字符串的处理与空字符串相同,更多详情请参见Distinction Between Null and Empty Strings 。
另请参见 operator==()、operator<()、operator>() 和Comparing Strings 。
[noexcept]
int QString::compare(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
该函数重载 compare()。
使用大小写敏感度设置cs ,将 this 与ch 进行比较。
[noexcept]
int QString::compare(QLatin1StringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 compare()。
与 compare(*this,other,cs) 相同。
[noexcept]
int QString::compare(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
该函数重载 compare()。
使用大小写敏感度设置cs ,将 this 与s 进行比较。
[noexcept]
int QString::compare(const QString &other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
该函数重载 compare()。
从词法上比较此字符串和字符串other ,如果此字符串小于other ,则返回一个负整数;如果大于other ,则返回一个正整数;如果两者相等,则返回 0。
与 compare(*this,other,cs) 相同。
[static noexcept]
int QString::compare(QLatin1StringView s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 compare()。
使用大小写敏感度设置cs 对s1 和s2 进行比较。
[static noexcept]
int QString::compare(QStringView s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 compare()。
[static noexcept]
int QString::compare(const QString &s1, QLatin1StringView s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 compare()。
使用大小写敏感度设置cs 对s1 和s2 进行比较。
[static noexcept]
int QString::compare(const QString &s1, QStringView s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 compare()。
QString::const_iterator QString::constBegin() const
返回指向字符串中第一个字符的 ConstSTL 样式迭代器。
警告: 返回的迭代器会在分离或修改QString 时失效。
const QChar *QString::constData() const
返回存储在QString 中数据的指针。该指针可用于访问组成字符串的字符。
请注意,只要字符串未被修改,指针就一直有效。
注意: 返回的字符串可能不是以 "0 "结尾。使用size() 确定数组的长度。
另请参阅 data(),operator[]() 和fromRawData().
QString::const_iterator QString::constEnd() const
返回一个指向字符串最后一个字符之后的 ConstSTL 样式迭代器。
警告: 返回的迭代器会在分离或修改QString 时失效。
另请参阅 constBegin() 和end()。
bool QString::contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const
如果正则表达式re 与该字符串中的某处匹配,则返回true
;否则返回false
。
如果匹配成功且rmatch 不是nullptr
,则还会将匹配结果写入rmatch 指向的QRegularExpressionMatch 对象。
另请参阅 QRegularExpression::match() 。
bool QString::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果该字符串包含字符串str 的出现,则返回true
;否则返回false
。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
示例
QString str = "Peter Pan"; str.contains("peter", Qt::CaseInsensitive); // returns true
bool QString::contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 contains()。
如果字符串中包含字符ch ,则返回true
;否则返回false
。
bool QString::contains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 contains()。
如果该字符串包含拉丁字母 1 字符串str 的出现,则返回true
;否则返回false
。
[noexcept]
bool QString::contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 contains()。
如果该字符串包含字符串视图str 的出现,则返回true
;否则返回false
。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
qsizetype QString::count(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
返回str 字符串在该字符串中出现的次数(可能重叠)。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
qsizetype QString::count(const QRegularExpression &re) const
此函数重载 count()。
返回正则表达式re 在字符串中匹配的次数。
由于历史原因,该函数计算重叠匹配的次数,因此在下面的示例中,有四个 "ana "或 "ama "的实例:
QString str = "banana and panama"; str.count(QRegularExpression("a[nm]a")); // returns 4
这种行为与使用QRegularExpressionMatchIterator 遍历字符串中的匹配项不同。
另请参见 QRegularExpression::globalMatch()。
qsizetype QString::count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 count()。
返回字符ch 在字符串中出现的次数。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
[since 6.0]
qsizetype QString::count(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 count()。
返回 viewstr 字符串在该字符串中出现的次数(可能重叠)。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
此函数在 Qt 6.0 中引入。
QString::const_reverse_iterator QString::crbegin() const
返回一个 ConstSTL 样式的反向迭代器,按相反顺序指向字符串中的第一个字符。
警告: 返回的迭代器在分离或修改QString 时失效。
另请参阅 begin()、rbegin() 和rend()。
QString::const_reverse_iterator QString::crend() const
返回一个 ConstSTL 样式的反向迭代器,按相反顺序指向字符串中最后一个字符之后。
警告: 返回的迭代器会在分离或修改QString 时失效。
QChar *QString::data()
返回存储在QString 中数据的指针。该指针可用于访问和修改组成字符串的字符。
与constData() 和unicode() 不同,返回的数据总是以"(0)"结束。
示例
QStringstr= "Hello world";QChar*data =str.data();while(!data->isNull()) { qDebug() << data->unicode(); ++data; }
请注意,只有在字符串未被其他方式修改时,指针才会保持有效。对于只读访问,constData() 的速度更快,因为它不会导致深度复制。
另请参阅 constData() 和operator[]()。
const QChar *QString::data() const
这是一个重载函数。
注意: 返回的字符串可能不是以'\0'结尾。请使用size() 确定数组的长度。
另请参阅 fromRawData() 。
QString::iterator QString::end()
返回一个STL 样式的迭代器,指向字符串中最后一个字符之后。
警告: 返回的迭代器会在分离或修改QString 时失效。
QString::const_iterator QString::end() const
此函数重载 end()。
bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果字符串以s 结尾,则返回true
;否则返回false
。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
QString str = "Bananas"; str.endsWith("anas"); // returns true str.endsWith("pple"); // returns false
另请参阅 startsWith() 。
bool QString::endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果字符串以c 结尾,则返回true
;否则返回false
。
此函数重载 endsWith()。
bool QString::endsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
该函数重载了 endsWith()。
[noexcept]
bool QString::endsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 endsWith()。
如果字符串以字符串视图str 结尾,则返回true
;否则返回false
。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
另请参阅 startsWith() 。
[since 6.1]
QString::iterator QString::erase(QString::const_iterator first, QString::const_iterator last)
从字符串中删除半开放范围 [first,last ) 中的字符。返回一个迭代器,指向紧接在最后一个擦除字符之后的字符(即在擦除之前由last 引用的字符)。
此函数在 Qt 6.1 中引入。
[since 6.5]
QString::iterator QString::erase(QString::const_iterator it)
这是一个重载函数。
从字符串中删除it
表示的字符。返回紧随被删除字符之后的字符的迭代器。
QString c = "abcdefg"; auto it = c.erase(c.cbegin()); // c is now "bcdefg"; "it" points to "b"
此函数在 Qt 6.5 中引入。
QString &QString::fill(QChar ch, qsizetype size = -1)
将字符串中的每个字符设置为ch 。如果size 与 -1 不同(默认值),字符串的大小会事先调整为size 。
示例
QString str = "Berlin"; str.fill('z'); // str == "zzzzzz" str.fill('A', 2); // str == "AA"
另请参阅 resize().
[static]
QString QString::fromCFString(CFStringRef string)
构造一个新的QString ,其中包含string CFString 的副本。
注意: 此函数仅适用于 macOS 和 iOS。
[static, since 6.6]
QString QString::fromEcmaString(emscripten::val jsString)
将ECMAScript 字符串 jsString 转换为QString 。如果提供的参数不是字符串,则行为未定义。
此函数在 Qt 6.6 中引入。
另请参阅 toEcmaString()。
[static]
QString QString::fromLatin1(const char *str, qsizetype size)
返回以 Latin-1 字符串str 的第一个size 字符初始化的QString 。
如果size 是-1
,则使用strlen(str)
代替。
另请参阅 toLatin1()、fromUtf8() 和fromLocal8Bit()。
[static, since 6.0]
QString QString::fromLatin1(QByteArrayView str)
这是一个重载函数。
返回一个初始化为拉丁字符串str 的QString 。
注: 字节数组中的任何空('\0')字节都将包含在此字符串中,并转换为 Unicode 空字符 (U+0000)。
此函数在 Qt 6.0 中引入。
[static]
QString QString::fromLatin1(const QByteArray &str)
这是一个重载函数。
返回一个初始化为拉丁字符串str 的QString 。
注意: 字节数组中的任何空('\0')字节都将包含在此字符串中,并转换为 Unicode 空字符 (U+0000)。此行为与 Qt 5.x 不同。
[static]
QString QString::fromLocal8Bit(const char *str, qsizetype size)
返回以 8 位字符串str 的第一个size 字符初始化的QString 。
如果size 是-1
,则使用strlen(str)
代替。
在 Unix 系统上,该函数等同于fromUtf8()。请注意,在 Apple 系统上,此函数不会考虑NSString. defaultCStringEncoding或CFStringGetSystemEncoding(),因为这些函数通常会返回传统的 "Western (Mac OS Roman) "编码,现代 Apple 操作系统不应使用这种编码。在 Windows 系统中,使用的是系统当前的编码页。
另请参见 toLocal8Bit()、fromLatin1() 和fromUtf8()。
[static, since 6.0]
QString QString::fromLocal8Bit(QByteArrayView str)
这是一个重载函数。
返回一个用 8 位字符串str 初始化的QString 。
在 Unix 系统上,该函数等同于fromUtf8()。请注意,在 Apple 系统上,此函数不考虑NSString. defaultCStringEncoding或CFStringGetSystemEncoding(),因为这些函数通常返回传统的 "Western (Mac OS Roman) "编码,现代 Apple 操作系统不应使用该编码。在 Windows 系统中,将使用系统当前的编码页。
注意: 字节数组中的任何空('\0')字节都将包含在此字符串中,并转换为 Unicode 空字符 (U+0000)。
此函数在 Qt 6.0 中引入。
[static]
QString QString::fromLocal8Bit(const QByteArray &str)
这是一个重载函数。
返回一个用 8 位字符串str 初始化的QString 。
在 Unix 系统上,该函数等同于fromUtf8()。请注意,在 Apple 系统上,此函数不考虑NSString. defaultCStringEncoding或CFStringGetSystemEncoding(),因为这些函数通常返回传统的 "Western (Mac OS Roman) "编码,现代 Apple 操作系统不应使用该编码。在 Windows 系统中,将使用系统当前的编码页。
注意: 字节数组中的任何空('\0')字节都将包含在此字符串中,并转换为 Unicode 空字符 (U+0000)。此行为与 Qt 5.x 不同。
[static]
QString QString::fromNSString(const NSString *string)
构造一个新的QString ,其中包含string NSString 的副本。
注意: 此函数仅适用于 macOS 和 iOS。
[static]
QString QString::fromRawData(const QChar *unicode, qsizetype size)
构造一个QString ,使用数组unicode 中的第一个size Unicode 字符。unicode 中的数据不会被复制。调用者必须能够保证,只要QString (或其未修改的副本)存在,就不会删除或修改unicode 。
任何修改QString 或其副本的尝试都会导致它创建数据的深度副本,从而确保原始数据不会被修改。
下面是一个示例,说明我们如何在内存中的原始数据上使用QRegularExpression ,而无需将数据复制到QString :
QRegularExpression pattern("\u00A4"); static const QChar unicode[] = { 0x005A, 0x007F, 0x00A4, 0x0060, 0x1009, 0x0020, 0x0020}; qsizetype size = sizeof(unicode) / sizeof(QChar); QString str = QString::fromRawData(unicode, size); if (str.contains(pattern) { // ... }
警告: 使用 fromRawData() 创建的字符串不是以"(0)"结尾的,除非原始数据在size 位置包含一个"(0)"字符。这意味着unicode()不会返回以"(0)"结尾的字符串(尽管utf16() 可以,但代价是复制原始数据)。
另请参阅 fromUtf16() 和setRawData()。
[static]
QString QString::fromStdString(const std::string &str)
返回str 字符串的副本。给定字符串假定以 UTF-8 编码,并使用fromUtf8() 函数转换为QString 。
另请参阅 fromLatin1()、fromLocal8Bit()、fromUtf8() 和QByteArray::fromStdString()。
[static]
QString QString::fromStdU16String(const std::u16string &str)
返回str 字符串的副本。给定字符串假定以 UTF-16 编码,并使用fromUtf16() 函数转换为QString 。
另请参阅 fromUtf16()、fromStdWString() 和fromStdU32String()。
[static]
QString QString::fromStdU32String(const std::u32string &str)
返回str 字符串的副本。给定字符串假定以 UTF-32 编码,并使用fromUcs4() 函数转换为QString 。
另请参阅 fromUcs4()、fromStdWString() 和fromStdU16String()。
[static]
QString QString::fromStdWString(const std::wstring &str)
返回str 字符串的副本。如果 wchar_t 的大小为 2 字节(例如在 windows 系统中),则假定给定字符串以 utf16 编码;如果 wchar_t 的大小为 4 字节(大多数 Unix 系统),则假定给定字符串以 ucs4 编码。
另请参阅 fromUtf16()、fromLatin1()、fromLocal8Bit()、fromUtf8()、fromUcs4()、fromStdU16String() 和fromStdU32String()。
[static]
QString QString::fromUcs4(const char32_t *unicode, qsizetype size = -1)
返回以 Unicode 字符串unicode (编码为 UTF-32)的第一个size 字符初始化的QString 。
如果size 为-1(默认值),则unicode 必须以 "0 "结尾。
另请参阅 toUcs4()、fromUtf16()、utf16()、setUtf16()、fromWCharArray() 和fromStdU32String()。
[static]
QString QString::fromUtf8(const char *str, qsizetype size)
返回以 UTF-8 字符串str 的第一个size 字节初始化的QString 。
如果size 是-1
,则使用strlen(str)
代替。
UTF-8 是一种 Unicode 编解码器,可以表示 Unicode 字符串中的所有字符,如QString 。不过,UTF-8 也可能出现无效序列,如果发现任何无效序列,将用一个或多个 "替换字符 "替换,或将其抑制。这包括非 Unicode 序列、非字符、超长序列或编码为 UTF-8 的代理码位。
只要所有 UTF-8 字符都在输入数据中结束,该函数就可以用于增量处理输入数据。字符串末尾任何未结束的字符都将被替换或抑制。要进行有状态解码,请使用QStringDecoder 。
另请参见 toUtf8()、fromLatin1() 和fromLocal8Bit()。
[static, since 6.0]
QString QString::fromUtf8(QByteArrayView str)
这是一个重载函数。
返回一个以 UTF-8 字符串str 初始化的QString 。
注意: 字节数组中的任何空('\0')字节都将包含在此字符串中,并转换为 Unicode 空字符 (U+0000)。
此函数在 Qt 6.0 中引入。
[static]
QString QString::fromUtf8(const QByteArray &str)
这是一个重载函数。
返回一个以 UTF-8 字符串str 初始化的QString 。
注意: 字节数组中的任何空('\0')字节都将包含在此字符串中,并转换为 Unicode 空字符 (U+0000)。此行为与 Qt 5.x 不同。
[static, since 6.1]
QString QString::fromUtf8(const char8_t *str)
这是一个重载函数。
该重载仅在以 C++20 模式编译时可用。
此函数在 Qt 6.1 中引入。
[static, since 6.0]
QString QString::fromUtf8(const char8_t *str, qsizetype size)
这是一个重载函数。
该重载仅在以 C++20 模式编译时可用。
此函数在 Qt 6.0 中引入。
[static]
QString QString::fromUtf16(const char16_t *unicode, qsizetype size = -1)
返回以 Unicode 字符串unicode (ISO-10646-UTF-16 编码)的第一个size 字符初始化的QString 。
如果size 为 -1(默认值),则unicode 必须以"(0)"结束。
该函数检查字节序标记(BOM)。如果缺少,则假定为主机字节序。
与其他 Unicode 转换相比,该函数速度较慢。如果可能,请使用QString(constQChar *, qsizetype) 或QString(constQChar *)。
QString 对 Unicode 数据进行深度拷贝。
另请参阅 utf16()、setUtf16() 和fromStdU16String()。
[static]
QString QString::fromWCharArray(const wchar_t *string, qsizetype size = -1)
读取wchar_t
数组的第一个size 编码单位,其起始点string ,将其转换为 Unicode,并将结果作为QString 返回。如果类型的大小为 4 字节,则wchar_t
使用的编码假定为 UTF-32,如果大小为 2 字节,则假定为 UTF-16。
如果size 为-1(默认),则string 必须以"(0)"结束。
另请参阅 fromUtf16()、fromLatin1()、fromLocal8Bit()、fromUtf8()、fromUcs4() 和fromStdWString() 。
QChar &QString::front()
返回字符串中第一个字符的引用。与operator[](0)
相同。
提供此函数是为了与 STL 兼容。
警告: 在空字符串上调用此函数将导致未定义的行为。
另请参阅 back()、at() 和operator[]()。
QChar QString::front() const
返回字符串中的第一个字符。与at(0)
相同。
提供此函数是为了与 STL 兼容。
警告: 在空字符串上调用此函数会导致未定义的行为。
另请参阅 back()、at() 和operator[]()。
qsizetype QString::indexOf(QLatin1StringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
从索引位置from 开始向前搜索,返回str 所查看的 Latin-1 字符串在该字符串中首次出现的索引位置。如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
例如
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
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从倒数第二个字符开始,依此类推。
另请参阅 lastIndexOf()、contains() 和count()。
qsizetype QString::indexOf(const QRegularExpression &re, qsizetype from = 0, QRegularExpressionMatch *rmatch = nullptr) const
返回正则表达式re 在字符串中第一个匹配的索引位置,从索引位置from 开始向前搜索。如果re 没有匹配到任何位置,则返回-1。
如果匹配成功,且rmatch 不是nullptr
,则还会将匹配结果写入rmatch 指向的QRegularExpressionMatch 对象。
示例
QString str = "the minimum"; str.indexOf(QRegularExpression("m[aeiou]"), 0); // returns 4 QString str = "the minimum"; QRegularExpressionMatch match; str.indexOf(QRegularExpression("m[aeiou]"), 0, &match); // returns 4 // match.captured() == mi
qsizetype QString::indexOf(const QString &str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
从索引位置from 开始向前搜索,返回str 字符串在该字符串中首次出现的索引位置。如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
例如
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
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从倒数第二个字符开始,依此类推。
另请参阅 lastIndexOf()、contains() 和count()。
qsizetype QString::indexOf(QChar ch, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
该函数重载 indexOf()。
从索引位置from 开始向前搜索,返回本字符串中首次出现字符ch 的索引位置。如果未找到ch ,则返回-1。
[noexcept]
qsizetype QString::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
该函数重载 indexOf()。
从索引位置from 开始向前搜索,返回字符串视图str 在该字符串中首次出现的索引位置。如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从倒数第二个字符开始,依此类推。
另请参阅 QStringView::indexOf()、lastIndexOf()、contains() 和count()。
QString &QString::insert(qsizetype position, const QString &str)
在给定的索引position 处插入字符串str ,并返回该字符串的引用。
示例
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是str 。
另请参阅 append()、prepend()、replace() 和remove()。
QString &QString::insert(qsizetype position, QChar ch)
此函数重载 insert()。
在给定的索引position 处插入ch 。
字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是ch 。
QString &QString::insert(qsizetype position, QLatin1StringView str)
该函数重载了 insert() 函数。
在给定的索引position 处插入由str 查看的 Latin-1 字符串。
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是str 。
[since 6.0]
QString &QString::insert(qsizetype position, QStringView str)
此函数重载 insert()。
在给定的索引position 处插入字符串视图str ,并返回该字符串的引用。
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是str 。
此函数在 Qt 6.0 中引入。
[since 6.5]
QString &QString::insert(qsizetype position, QUtf8StringView str)
该函数重载了 insert() 函数。
在给定索引position 处插入 UTF-8 字符串视图str 。
注意: 从概念上讲,插入可变宽度的 UTF-8 编码字符串数据比插入固定宽度的字符串数据(如 UTF-16 (QStringView) 或 Latin-1 (QLatin1StringView) )要慢,因此应尽量少用。
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是str 。
此函数在 Qt 6.5 中引入。
QString &QString::insert(qsizetype position, const QByteArray &str)
该函数重载 insert()。
将str 的内容解释为 UTF-8,在给定的索引position 处插入其编码的 Unicode 字符串,并返回该字符串的引用。
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是str 。
定义QT_NO_CAST_FROM_ASCII 时,此函数不可用。
QString &QString::insert(qsizetype position, const char *str)
此函数重载 insert()。
在给定的索引position 处插入 C 字符串str ,并返回该字符串的引用。
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则会向字符串添加空格字符,以达到position ,然后是str 。
定义QT_NO_CAST_FROM_ASCII 时,此函数不可用。
QString &QString::insert(qsizetype position, const QChar *unicode, qsizetype size)
该函数重载了 insert()。
在给定的position 索引处插入QChar 数组unicode 的前size 个字符。
该字符串会增长以适应插入。如果position 超过了字符串的末尾,则将空格字符追加到字符串中,以到达position ,然后是QChar 数组unicode 中的size 字符。
[noexcept]
bool QString::isEmpty() const
如果字符串中没有字符,则返回true
;否则返回false
。
示例
QString().isEmpty(); // returns true QString("").isEmpty(); // returns true QString("x").isEmpty(); // returns false QString("abc").isEmpty(); // returns false
另请参见 size().
bool QString::isLower() const
如果字符串是小写字母,即与toLower() 的折叠式相同,则返回true
。
请注意,这并不意味着字符串不包含大写字母(某些大写字母没有小写折叠;它们在toLower() 中保持不变。)更多信息,请参阅 Unicode 标准第 3.13 节。
另请参见 QChar::toLower() 和isUpper()。
bool QString::isNull() const
如果该字符串为空,则返回true
;否则返回false
。
举例说明:
QString().isNull(); // returns true QString("").isNull(); // returns false QString("abc").isNull(); // returns false
出于历史原因,Qt 区分了空字符串和空字符串。对于大多数应用程序来说,重要的是字符串是否包含任何数据,这可以使用isEmpty() 函数来确定。
另请参见 isEmpty()。
bool QString::isRightToLeft() const
如果字符串从右向左读取,则返回true
。
另请参阅 QStringView::isRightToLeft().
bool QString::isUpper() const
如果字符串是大写字母,即与toUpper() 的折叠式相同,则返回true
。
请注意,这并不意味着字符串不包含小写字母(有些小写字母没有大写折叠;toUpper() 将保持不变。)更多信息,请参阅 Unicode 标准第 3.13 节。
另请参见 QChar::toUpper() 和isLower()。
[noexcept]
bool QString::isValidUtf16() const
如果字符串包含有效的 UTF-16 编码数据,则返回true
,否则返回false
。
请注意,该函数不会对数据进行任何特殊验证;它只是检查数据是否能成功从 UTF-16 解码。假定数据按主机字节顺序排列;BOM 的存在毫无意义。
另请参见 QStringView::isValidUtf16()。
qsizetype QString::lastIndexOf(const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch = nullptr) const
返回正则表达式re 在字符串中最后一个匹配字符的索引位置,该匹配字符从索引位置from 之前开始。
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从次最后一个字符开始,依此类推。
如果re 没有匹配到任何字符,则返回-1。
如果匹配成功,且rmatch 不是nullptr
,则还会将匹配结果写入rmatch 指向的QRegularExpressionMatch 对象。
示例
QString str = "the minimum"; str.lastIndexOf(QRegularExpression("m[aeiou]")); // returns 8 QString str = "the minimum"; QRegularExpressionMatch match; str.lastIndexOf(QRegularExpression("m[aeiou]"), -1, &match); // returns 8 // match.captured() == mu
注意: 由于正则表达式匹配算法的工作原理,该函数实际上将从字符串的开头开始重复匹配,直到到达from 的位置。
注: 当搜索可能匹配 0 个字符的正则表达式re 时,数据末尾的匹配将通过负from 从搜索中排除,尽管-1
通常被认为是从字符串的末尾开始搜索:末尾的匹配在最后一个字符之后,因此被排除在外。要包含这种最后的空匹配,要么为from 赋正值,要么完全省略from 参数。
qsizetype QString::lastIndexOf(const QString &str, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
从索引位置from 开始向后搜索,返回str 字符串在该字符串中最后出现的索引位置。
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从次最后一个字符开始,依此类推。
如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
示例
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
注意: 当搜索长度为 0 的str 时,数据末尾的匹配将通过负from 从搜索中排除,尽管-1
通常被认为是从字符串的末尾开始搜索:末尾的匹配在最后一个字符之后,因此被排除在外。要包含这种最后的空匹配,要么为from 赋正值,要么完全省略from 参数。
另请参见 indexOf()、contains() 和count()。
[noexcept, since 6.3]
qsizetype QString::lastIndexOf(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载了 lastIndexOf()。
此函数在 Qt 6.3 中引入。
[since 6.2]
qsizetype QString::lastIndexOf(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 lastIndexOf()。
返回str 在此字符串中最后出现的索引位置。如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
示例
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
此函数在 Qt 6.2 中引入。
另请参阅 indexOf()、contains() 和count()。
[noexcept, since 6.2]
qsizetype QString::lastIndexOf(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 lastIndexOf()。
返回字符串 viewstr 在该字符串中最后出现的索引位置。如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
此函数在 Qt 6.2 中引入。
另请参阅 indexOf()、contains() 和count()。
[since 6.2]
qsizetype QString::lastIndexOf(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const
此函数重载 lastIndexOf()。
返回正则表达式re 在字符串中最后匹配的索引位置。如果re 没有匹配到任何地方,则返回-1。
如果匹配成功,且rmatch 不是nullptr
,则还会将匹配结果写入rmatch 指向的QRegularExpressionMatch 对象。
示例
QString str = "the minimum"; str.lastIndexOf(QRegularExpression("m[aeiou]")); // returns 8 QString str = "the minimum"; QRegularExpressionMatch match; str.lastIndexOf(QRegularExpression("m[aeiou]"), -1, &match); // returns 8 // match.captured() == mu
注意: 由于正则表达式匹配算法的工作原理,该函数实际上会从字符串的开头开始重复匹配,直到字符串的结尾。
此函数在 Qt 6.2 中引入。
[since 6.2]
qsizetype QString::lastIndexOf(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 lastIndexOf()。
返回str 在此字符串中最后出现的索引位置。如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
示例
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
此函数在 Qt 6.2 中引入。
另请参阅 indexOf()、contains() 和count()。
qsizetype QString::lastIndexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 lastIndexOf()。
返回字符ch 在该字符串中最后出现的索引位置,从索引位置from 开始向后搜索。
qsizetype QString::lastIndexOf(QLatin1StringView str, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 lastIndexOf()。
从索引位置from 开始向后搜索,返回str 所查看的 Latin-1 字符串在此字符串中最后出现的索引位置。
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从次最后一个字符开始搜索,依此类推。
如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
示例
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
注意: 当搜索长度为 0 的str 时,数据末尾的匹配将通过负from 从搜索中排除,尽管-1
通常被认为是从字符串的末尾开始搜索:末尾的匹配在最后一个字符之后,因此被排除在外。要包含这种最后的空匹配,要么为from 赋正值,要么完全省略from 参数。
另请参见 indexOf()、contains() 和count()。
[noexcept]
qsizetype QString::lastIndexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 lastIndexOf()。
返回字符串视图str 在该字符串中最后出现的索引位置,从索引位置from 开始向后搜索。
如果from 为-1,则从最后一个字符开始搜索;如果为-2,则从次最后一个字符开始,依此类推。
如果未找到str ,则返回-1。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
注意: 当搜索长度为 0 的str 时,数据末尾的匹配将通过负from 从搜索中排除,尽管-1
通常被认为是从字符串的末尾开始搜索:末尾的匹配在最后一个字符之后,因此被排除在外。要包含这种最后的空匹配,要么为from 赋正值,要么完全省略from 参数。
另请参见 indexOf()、contains() 和count()。
QString QString::leftJustified(qsizetype width, QChar fill = u' ', bool truncate = false) const
返回大小为width 的字符串,该字符串包含以fill 字符填充的此字符串。
如果truncate 是false
,且字符串的size() 大于width ,则返回的字符串是该字符串的副本。
如果truncate 是true
,且字符串的size() 大于width ,则删除width 位置后字符串副本中的任何字符,并返回副本。
QString str = "Pineapple"; str = str.leftJustified(5, '.', true); // str == "Pinea"
另请参见 rightJustified()。
[noexcept]
qsizetype QString::length() const
返回字符串中的字符数。等同于size()。
另请参阅 resize()。
[static]
int QString::localeAwareCompare(const QString &s1, const QString &s2)
将s1 与s2 进行比较,如果s1 小于、等于或大于s2 ,则返回一个小于、等于或大于 0 的整数。
比较的方式取决于本地和平台。使用该函数可向用户显示已排序的字符串列表。
另请参阅 compare(),QLocale, 和Comparing Strings 。
[since 6.0]
int QString::localeAwareCompare(QStringView other) const
该函数重载了 localeAwareCompare()。
将此字符串与other 字符串进行比较,如果此字符串小于、等于或大于other 字符串,则返回一个小于、等于或大于零的整数。
比较的方式取决于本地和平台。使用此函数可向用户显示已排序的字符串列表。
与localeAwareCompare(*this, other)
相同。
此函数在 Qt 6.0 中引入。
另请参阅 Comparing Strings 。
int QString::localeAwareCompare(const QString &other) const
该函数重载了 localeAwareCompare()。
将此字符串与other 字符串进行比较,如果此字符串小于、等于或大于other 字符串,则返回一个小于、等于或大于零的整数。
比较的方式取决于本地和平台。使用此函数可向用户显示已排序的字符串列表。
与localeAwareCompare(*this, other)
相同。
另请参见 Comparing Strings 。
[static, since 6.0]
int QString::localeAwareCompare(QStringView s1, QStringView s2)
该函数重载了 localeAwareCompare()。
将s1 与s2 进行比较,如果s1 小于、等于或大于s2 ,则返回一个小于、等于或大于零的整数。
比较的方式取决于本地和平台。使用该函数可向用户显示已排序的字符串列表。
此函数在 Qt 6.0 中引入。
另请参见 Comparing Strings 。
QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const
根据给定的 Unicode 标准version ,以给定的 Unicode 规范化mode 返回字符串。
[static]
QString QString::number(long n, int base = 10)
根据指定的base ,返回等价于数字n 的字符串。
默认基数为 10,且必须介于 2 和 36 之间。对于 10 以外的基数,n 将被视为无符号整数。
格式化始终使用QLocale::C ,即 English/UnitedStates。要获取一个数字的本地化字符串表示,请使用QLocale::toString() 和相应的本地语言。
long a = 63; QString s = QString::number(a, 16); // s == "3f" QString t = QString::number(a, 16).toUpper(); // t == "3F"
另请参阅 setNum()。
[static]
QString QString::number(double n, char format = 'g', int precision = 6)
返回表示浮点数n 的字符串。
返回表示n 的字符串,格式根据指定的format 和precision 确定。
对于带指数的格式,指数将显示其符号,并至少有两位数,如果需要,可在指数前加零。
另请参阅 setNum(),QLocale::toString(),QLocale::FloatingPointPrecisionOption, 和Number Formats 。
[static]
QString QString::number(int n, int base = 10)
这是一个重载函数。
[static]
QString QString::number(qlonglong n, int base = 10)
这是一个重载函数。
[static]
QString QString::number(qulonglong n, int base = 10)
这是一个重载函数。
[static]
QString QString::number(uint n, int base = 10)
这是一个重载函数。
[static]
QString QString::number(ulong n, int base = 10)
这是一个重载函数。
QString &QString::prepend(const QString &str)
将字符串str 预分配到该字符串的开头,并返回该字符串的引用。
这个操作通常非常快(恒定时间),因为QString 在字符串数据的开头预分配了额外空间,所以每次都无需重新分配整个字符串就能增长。
举例说明:
QString &QString::prepend(QChar ch)
此函数重载 prepend()。
将字符ch 预输入该字符串。
QString &QString::prepend(QLatin1StringView str)
此函数重载 prepend()。
将str 查看到的 Latin-1 字符串预输入该字符串。
[since 6.0]
QString &QString::prepend(QStringView str)
此函数重载 prepend()。
将字符串视图str 预置到该字符串的开头,并返回对该字符串的引用。
此函数在 Qt 6.0 中引入。
[since 6.5]
QString &QString::prepend(QUtf8StringView str)
此函数重载 prepend()。
将 UTF-8 字符串视图str 预输入该字符串。
此函数在 Qt 6.5 中引入。
QString &QString::prepend(const QByteArray &ba)
此函数重载 prepend()。
将字节数组ba 预输入字符串。使用fromUtf8() 函数将字节数组转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 禁用此函数。例如,如果您想确保所有用户可见字符串都经过QObject::tr() 处理,这将非常有用。
QString &QString::prepend(const char *str)
此函数重载 prepend()。
将字符串str 预输入该字符串。const char 指针使用fromUtf8() 函数转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此函数。例如,如果您想确保所有用户可见字符串都经过QObject::tr() 处理,这将非常有用。
QString &QString::prepend(const QChar *str, qsizetype len)
此函数重载 prepend()。
将QChar 数组str 中的len 字符预输入该字符串,并返回该字符串的引用。
void QString::push_back(const QString &other)
提供此函数是为了与 STL 兼容,将给定的other 字符串追加到此字符串的末尾。它等同于append(other)
。
另请参阅 append() 。
void QString::push_back(QChar ch)
这是一个重载函数。
将给定的ch 字符追加到字符串的末尾。
void QString::push_front(const QString &other)
提供此函数是为了与 STL 兼容,将给定的other 字符串预置到此字符串的开头。它等同于prepend(other)
。
另请参阅 prepend() 。
void QString::push_front(QChar ch)
这是一个重载函数。
将给定的ch 字符预置到字符串的开头。
QString::reverse_iterator QString::rbegin()
返回一个STL 样式的反向迭代器,按相反顺序指向字符串中的第一个字符。
警告: 返回的迭代器在分离或修改QString 时失效。
另请参阅 begin()、crbegin() 和rend()。
QString::const_reverse_iterator QString::rbegin() const
这是一个重载函数。
QString &QString::remove(const QRegularExpression &re)
删除正则表达式re 在字符串中出现的每一次,并返回字符串的引用。例如
QString r = "Telephone"; r.remove(QRegularExpression("[aeiou].")); // r == "The"
删除元素将保留字符串的容量,不会减少分配的内存量。为减少额外容量并释放尽可能多的内存,请在最后一次更改字符串大小后调用squeeze() 。
另请参阅 indexOf()、lastIndexOf() 和replace()。
QString &QString::remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)
删除该字符串中出现的所有字符ch ,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
示例
这与replace(ch, "", cs)
相同。
删除元素将保留字符串的容量,不会减少分配的内存量。为减少额外容量并释放尽可能多的内存,请在最后一次更改字符串大小后调用squeeze() 。
另请参阅 replace() 。
QString &QString::remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
删除此字符串中出现的str 字符串,并返回此字符串的引用。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
这与replace(str, "", cs)
相同。
删除元素将保留字符串的容量,而不会减少分配的内存量。为减少额外容量并释放尽可能多的内存,请在最后一次更改字符串大小后调用squeeze() 。
另请参阅 replace() 。
QString &QString::remove(qsizetype position, qsizetype n)
从给定的position 索引开始,删除字符串中的n 字符,并返回字符串的引用。
如果指定的position 索引在字符串内,但position +n 超出了字符串的末尾,则在指定的position 处截断字符串。
如果n <= 0,则不会有任何变化。
QString s = "Montreal"; s.remove(1, 4); // s == "Meal"
删除元素将保留字符串的容量,而不会减少分配的内存量。为减少额外容量并释放尽可能多的内存,请在最后一次更改字符串大小后调用squeeze() 。
QString &QString::remove(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive)
这是一个重载函数。
删除str 查看的给定 Latin-1 字符串在此字符串中出现的每一次,并返回此字符串的引用。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
这与replace(str, "", cs)
相同。
删除元素将保留字符串的容量,而不会减少分配的内存量。为减少额外容量并释放尽可能多的内存,请在最后一次更改字符串大小后调用squeeze() 。
另请参阅 replace() 。
[since 6.5]
QString &QString::removeAt(qsizetype pos)
删除pos 索引处的字符。如果pos 越界(即pos >=size() ),则此函数不会执行任何操作。
此函数在 Qt 6.5 中引入。
另请参阅 remove()。
[since 6.5]
QString &QString::removeFirst()
删除字符串中的第一个字符。如果字符串为空,则此函数不执行任何操作。
此函数在 Qt 6.5 中引入。
另请参阅 remove()。
[since 6.1]
template <typename Predicate> QString &QString::removeIf(Predicate pred)
从字符串中删除谓词pred 返回 true 的所有元素。返回字符串的引用。
此函数在 Qt 6.1 中引入。
另请参阅 remove()。
[since 6.5]
QString &QString::removeLast()
删除字符串中的最后一个字符。如果字符串为空,则此函数不执行任何操作。
此函数在 Qt 6.5 中引入。
另请参阅 remove()。
QString::reverse_iterator QString::rend()
返回一个STL 样式的反向迭代器,以相反的顺序指向字符串中最后一个字符的后面。
警告: 返回的迭代器在分离或修改QString 时失效。
QString::const_reverse_iterator QString::rend() const
这是一个重载函数。
QString QString::repeated(qsizetype times) const
返回该字符串的副本,重复指定数量的times 。
如果times 小于 1,则返回空字符串。
示例
QString str("ab"); str.repeated(4); // returns "abababab"
QString &QString::replace(qsizetype position, qsizetype n, const QString &after)
用字符串after 替换从索引position 开始的n 字符,并返回该字符串的引用。
注意: 如果指定的position 索引在字符串范围内,但position +n 超出了字符串范围,则n 将被调整为在字符串末尾停止。
举例说明:
QString &QString::replace(const QRegularExpression &re, const QString &after)
该函数重载 replace()。
用after 替换字符串中正则表达式re 的每一次出现。返回字符串的引用。例如
QString s = "Banana"; s.replace(QRegularExpression("a[mn]"), "ox"); // s == "Boxoxa"
对于包含捕获组的正则表达式,after 中出现的\1,\2, ...将被替换为相应捕获组捕获的字符串。
QString t = "A <i>bon mot</i>."; t.replace(QRegularExpression("<i>([^<]*)</i>"), "\\emph{\\1}"); // t == "A \\emph{bon mot}."
另请参阅 indexOf(),lastIndexOf(),remove(),QRegularExpression, 和QRegularExpressionMatch 。
QString &QString::replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用字符after 替换before 中出现的每个字符,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
QString &QString::replace(QChar c, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用字符串after 替换c 中出现的每个字符,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
注意: 替换后不会重新扫描文本。
QString &QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用after 替换字符串中出现的每个字符ch ,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
QString &QString::replace(QLatin1StringView before, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用after 查看的 Latin-1 字符串替换before 查看的 Latin-1 字符串在此字符串中的每一次出现,并返回此字符串的引用。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
注意: 替换后不会重新扫描文本。
注意: 如果使用空before 参数,将在字符串的每个字符前后插入after 参数。
QString &QString::replace(QLatin1StringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用after 替换此字符串中before 查看到的 Latin-1 字符串的每一次出现,并返回此字符串的引用。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
注意: 替换后不会重新扫描文本。
注意: 如果使用空before 参数,将在字符串的每个字符前后插入after 参数。
QString &QString::replace(const QString &before, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用字符串after 替换before 中出现的每个字符串,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
注意: 替换后不会重新扫描文本。
注意: 如果使用空before 参数,将在字符串的每个字符前后插入after 参数。
QString &QString::replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
用字符串after 替换before 中出现的每个字符串,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
示例
QString str = "colour behaviour flavour neighbour"; str.replace(QString("ou"), QString("o")); // str == "color behavior flavor neighbor"
注意: 插入替换文本后不会重新扫描。
示例
QString equis = "xxxxxx"; equis.replace("xx", "x"); // equis == "xxx"
注意: 如果使用空before 参数,将在字符串的每个字符前后插入after 参数。
QString &QString::replace(qsizetype position, qsizetype n, QChar after)
此函数重载 replace()。
用字符after 替换从索引position 开始的n 字符,并返回该字符串的引用。
QString &QString::replace(qsizetype position, qsizetype n, const QChar *after, qsizetype alen)
此函数重载 replace()。
用QChar 数组after 的第一个alen 字符替换索引position 开始的n 字符,并返回该字符串的引用。
QString &QString::replace(const QChar *before, qsizetype blen, const QChar *after, qsizetype alen, Qt::CaseSensitivity cs = Qt::CaseSensitive)
此函数重载 replace()。
将该字符串中出现的before 的第一个blen 字符替换为after 的第一个alen 字符,并返回对该字符串的引用。
如果cs 是Qt::CaseSensitive (默认),则搜索区分大小写;否则搜索不区分大小写。
注意: 如果before 指向空字符串(即blen ==0),则after 指向的字符串将插入到该字符串中每个字符的前后。
void QString::reserve(qsizetype size)
确保字符串至少有size 个字符的空间。
如果事先知道字符串的大小,就可以调用此函数,以避免在构建字符串时重复重新分配。这可以提高以增量方式构建字符串时的性能。一长串增加字符串的操作可能会触发多次重新分配,最后一次重新分配的空间可能远远超出需要。这比一开始就分配合适大小的空间效率要低。
如果对需要多少空间有疑问,通常最好使用一个上限作为size ,或者对最可能的大小进行较高的估计,如果严格的上限会比这大得多的话。如果size 是一个低估值,那么一旦超过预留大小,字符串就会根据需要增长,这可能会导致比最佳高估值更大的分配,并会减慢触发操作的速度。
警告: reserve() 会保留内存,但不会改变字符串的大小。访问超出字符串末尾的数据是未定义的行为。如果需要访问超出当前字符串末尾的内存,请使用resize()。
该函数适用于需要建立长字符串并希望避免重复重新分配的代码。在本例中,我们希望增加字符串的长度,直到true
,而且我们相当确定该长度足够大,值得调用 reserve() 函数:
QString result; qsizetype maxSize; bool condition; QChar nextChar; result.reserve(maxSize); while (condition) result.append(nextChar); result.squeeze();
另请参见 squeeze()、capacity() 和resize()。
void QString::resize(qsizetype size)
将字符串的长度设置为size 。
如果size 大于当前字符串大小,字符串将扩展为size 字符长,并在末尾添加额外字符。新字符不会被初始化。
如果size 小于当前大小,字符串中将不包含超出size 位置的字符。
注意: resize() 会根据需要增加容量,但不会缩小容量。要删除多余容量,请使用squeeze() 。
示例
QString s = "Hello world"; s.resize(5); // s == "Hello" s.resize(8); // s == "Hello???" (where ? stands for any character)
如果要在字符串中添加一定数量的相同字符,请使用resize(qsizetype, QChar) 重载。
如果要扩展字符串,使其达到一定宽度,并用特定字符填充新位置,请使用leftJustified() 函数:
如果size 为负数,则相当于传递 0。
QString r = "Hello"; r = r.leftJustified(10, ' '); // r == "Hello "
另请参见 truncate()、reserve() 和squeeze()。
void QString::resize(qsizetype newSize, QChar fillChar)
这是一个重载函数。
与resize(qsizetype) 不同,该重载将新字符初始化为fillChar :
QString t = "Hello"; r.resize(t.size() + 10, 'X'); // t == "HelloXXXXXXXXXX"
[since 6.8]
void QString::resizeForOverwrite(qsizetype size)
将字符串的大小设置为size 字符。如果字符串的大小增加,新字符将被取消初始化。
其行为与resize(size)
相同。
此函数在 Qt 6.8 中引入。
另请参阅 resize()。
QString QString::rightJustified(qsizetype width, QChar fill = u' ', bool truncate = false) const
返回包含fill 字符后的size()width 字符串。例如
如果truncate 为false
,且字符串的size() 大于width ,则返回的字符串为该字符串的副本。
如果truncate 为 true,且字符串中的size() 大于width ,那么返回的字符串将在width 位置截断。
QString str = "Pineapple"; str = str.rightJustified(5, '.', true); // str == "Pinea"
另请参阅 leftJustified()。
QString QString::section(QChar sep, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const
该函数返回字符串的一个部分。
该字符串被视为由sep 字符分隔的字段序列。返回的字符串包括从位置start 到位置end (含)的字段。如果未指定end ,则包括从位置start 到字符串末尾的所有字段。字段从左往右依次编号为 0、1、2 等,从右往左依次编号为-1、-2 等。
flags 参数可用于影响函数行为的某些方面,例如是否区分大小写、是否跳过空字段以及如何处理前导分隔符和尾部分隔符;请参阅SectionFlags 。
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"
如果start 或end 为负数,我们将从字符串的右侧开始计算字段,最右侧的字段为-1,最右侧的字段为-2,以此类推。
str = csv.section(',', -3, -2); // str == "middlename,surname" str = path.section('/', -1); // str == "myapp"
另请参见 split() 。
QString QString::section(const QRegularExpression &re, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const
该函数重载 section()。
该字符串被视为由正则表达式re 分隔的字段序列。
QString line = "forename\tmiddlename surname \t \t phone"; QRegularExpression sep("\\s+"); str = line.section(sep, 2, 2); // str == "surname" str = line.section(sep, -3, -2); // str == "middlename surname"
警告: 使用QRegularExpression 版本要比重载字符串和字符版本昂贵得多。
另请参阅 split() 和simplified()。
QString QString::section(const QString &sep, qsizetype start, qsizetype end = -1, QString::SectionFlags flags = SectionDefault) const
此函数重载 section()。
QString str; QString data = "forename**middlename**surname**phone"; str = data.section("**", 2, 2); // str == "surname" str = data.section("**", -3, -2); // str == "middlename**surname"
另请参见 split()。
QString &QString::setNum(int n, int base = 10)
将字符串设置为n 在指定base 中的打印值,并返回字符串的引用。
默认基数为 10,且必须介于 2 和 36 之间。
QString str; str.setNum(1234); // str == "1234"
格式化始终使用QLocale::C ,即 English/UnitedStates。要获取数字的本地化字符串表示,请使用QLocale::toString() 并使用相应的本地语言。
另请参阅 number()。
QString &QString::setNum(long n, int base = 10)
这是一个重载函数。
QString &QString::setNum(qlonglong n, int base = 10)
这是一个重载函数。
QString &QString::setNum(qulonglong n, int base = 10)
这是一个重载函数。
QString &QString::setNum(short n, int base = 10)
这是一个重载函数。
QString &QString::setNum(uint n, int base = 10)
这是一个重载函数。
QString &QString::setNum(ulong n, int base = 10)
这是一个重载函数。
QString &QString::setNum(ushort n, int base = 10)
这是一个重载函数。
QString &QString::setNum(double n, char format = 'g', int precision = 6)
这是一个重载函数。
将字符串设置为n 的打印值,并根据给定的format 和precision 进行格式化,然后返回该字符串的引用。
另请参阅 number(),QLocale::FloatingPointPrecisionOption, 和Number Formats 。
QString &QString::setNum(float n, char format = 'g', int precision = 6)
这是一个重载函数。
将字符串设置为n 的打印值,并根据给定的format 和precision 进行格式化,然后返回该字符串的引用。
格式化始终使用QLocale::C ,即 English/UnitedStates。要获取一个数字的本地化字符串表示,请使用QLocale::toString() 和相应的本地语言。
另请参阅 number()。
QString &QString::setRawData(const QChar *unicode, qsizetype size)
重置QString ,使用数组unicode 中的第一个size Unicode 字符。unicode 中的数据不会被复制。调用者必须能够保证,只要QString (或其未修改副本)存在,就不会删除或修改unicode 。
该函数可代替fromRawData() 用于重新使用现有的QString 对象,以节省内存重新分配。
另请参见 fromRawData()。
QString &QString::setUnicode(const QChar *unicode, qsizetype size)
将字符串的大小调整为size 字符,并将unicode 复制到字符串中。
如果unicode 是nullptr
,则不会复制任何内容,但字符串的大小仍会调整为size 。
QString &QString::setUtf16(const ushort *unicode, qsizetype size)
将字符串的大小调整为size 字符,并将unicode 复制到字符串中。
如果unicode 是nullptr
,则不会复制任何内容,但字符串的大小仍会调整为size 。
请注意,与fromUtf16() 不同,此函数不考虑 BOM 和可能不同的字节排序。
另请参阅 utf16() 和setUnicode()。
void QString::shrink_to_fit()
提供此函数是为了与 STL 兼容。它等同于squeeze()。
另请参见 squeeze()。
QString QString::simplified() const
返回一个字符串,该字符串的开头和结尾的空格已被删除,内部空格的每个序列都被替换为一个空格。
空白指QChar::isSpace() 返回true
的任何字符。这包括 ASCII 字符'\t'、'\n'、'\v'、'\f'、'\r'和''。
举例说明:
QString str = " lots\t of\nwhitespace\r\n "; str = str.simplified(); // str == "lots of whitespace";
另请参阅 trimmed() 。
[noexcept]
qsizetype QString::size() const
返回字符串中的字符数。
字符串中的最后一个字符位于 size() - 1 位置。
示例:
QString str = "World"; qsizetype n = str.size(); // n == 5 str.data()[0]; // returns 'W' str.data()[4]; // returns 'd'
[since 6.8]
QString &QString::slice(qsizetype pos, qsizetype n)
修改字符串,使其从pos 位置开始,扩展n 字符(码位),并返回对该字符串的引用。
注意: 如果pos < 0、n < 0 或pos +n >size() 则行为未定义。
QString x = u"Nine pineapples"_s; x.slice(5); // x == "pineapples" x.slice(4, 3); // x == "app"
此函数在 Qt 6.8 中引入。
另请参阅 sliced()、first()、last()、chopped()、chop() 和truncate()。
[since 6.8]
QString &QString::slice(qsizetype pos)
这是一个重载函数。
修改字符串,使其从pos 位置开始并延伸至其末尾,并返回对该字符串的引用。
注意: 如果pos < 0 或pos >size() 则行为未定义。
此函数在 Qt 6.8 中引入。
另请参阅 sliced()、first()、last()、chopped()、chop() 和truncate()。
QStringList QString::split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
将sep 出现的字符串拆分成子串,并返回这些字符串的列表。如果sep 不匹配字符串中的任何位置,则 split() 返回包含该字符串的单元素列表。
cs 指定 是大小写敏感匹配还是大小写不敏感匹配。sep
如果behavior 是Qt::SkipEmptyParts ,则结果中不会出现空条目。默认情况下,将保留空条目。
示例
QString str = QStringLiteral("a,,b,c"); QStringList list1 = str.split(u','); // list1: [ "a", "", "b", "c" ] QStringList list2 = str.split(u',', Qt::SkipEmptyParts); // list2: [ "a", "b", "c" ]
如果sep 为空,则 split() 返回一个空字符串,然后是该字符串的每个字符,最后是另一个空字符串:
要理解这种行为,请回想一下,空字符串在任何地方都匹配,因此上述情况在性质上与.split()相同:
QString str = "/a/b/c/"; auto parts = str.split(u'/'); // parts: {"", "a", "b", "c", ""}
另请参见 QStringList::join() 和section()。
QStringList QString::split(const QRegularExpression &re, Qt::SplitBehavior behavior = Qt::KeepEmptyParts) const
这是一个重载函数。
只要正则表达式re 匹配,就将字符串拆分成子串,并返回这些字符串的列表。如果re 在字符串的任何地方都不匹配,则 split() 返回一个包含该字符串的单元素列表。
下面是一个使用一个或多个空白字符作为分隔符提取句子中单词的示例:
QString str; QStringList list; str = "Some text\n\twith strange whitespace."; list = str.split(QRegularExpression("\\s+")); // list: [ "Some", "text", "with", "strange", "whitespace." ]
下面是一个类似的例子,但这次我们使用任意一串非单词字符作为分隔符:
str = "This time, a normal English sentence."; list = str.split(QRegularExpression("\\W+"), Qt::SkipEmptyParts); // list: [ "This", "time", "a", "normal", "English", "sentence" ]
下面是第三个例子,我们使用零长度断言\b(单词边界)将字符串分割为非单词和单词标记的交替序列:
str = "Now: this sentence fragment."; list = str.split(QRegularExpression("\\b")); // list: [ "", "Now", ": ", "this", " ", "sentence", " ", "fragment", "." ]
另请参见 QStringList::join() 和section()。
QStringList QString::split(QChar sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
这是一个重载函数。
void QString::squeeze()
释放存储字符数据所不需要的内存。
该函数的唯一目的是提供一种微调QString 内存使用情况的方法。一般来说,您很少需要调用此函数。
bool QString::startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果字符串以s 开头,则返回true
;否则返回false
。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
QString str = "Bananas"; str.startsWith("Ban"); // returns true str.startsWith("Car"); // returns false
另请参阅 endsWith() 。
bool QString::startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 startsWith()。
如果字符串以c 开始,则返回true
;否则返回false
。
bool QString::startsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
此函数重载 startsWith()。
[noexcept]
bool QString::startsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
这是一个重载函数。
如果字符串以字符串视图str 开头,则返回true
;否则返回false
。
如果cs 是Qt::CaseSensitive (默认值),则搜索区分大小写;否则搜索不区分大小写。
另请参阅 endsWith() 。
[noexcept]
void QString::swap(QString &other)
将该字符串与other 互换。该操作速度非常快,从未出现过故障。
CFStringRef QString::toCFString() const
从QString 创建 CFString。
调用者拥有 CFString 并负责释放它。
注意: 此函数仅适用于 macOS 和 iOS。
QString QString::toCaseFolded() const
返回字符串的大小写折叠值。对于大多数 Unicode 字符,这与toLower() 相同。
double QString::toDouble(bool *ok = nullptr) const
返回转换为double
值的字符串。
如果转换溢出,则返回无穷大;如果转换因其他原因(如下溢)失败,则返回 0.0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
QString str = "1234.56"; double val = str.toDouble(); // val == 1234.56
警告: QString 内容只能包含有效的数字字符,包括正负号、科学记数法中使用的字符 e 和小数点。包含单位或其他字符会导致转换错误。
bool ok; double d; d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456 d = QString( "1234.56e-02 Volt" ).toDouble(&ok); // ok == false, d == 0
字符串转换始终在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toDouble()
d = QString( "1234,56" ).toDouble(&ok); // ok == false d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56
由于历史原因,此函数不处理千位组分隔符。如果需要转换此类数字,请使用QLocale::toDouble()。
d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false d = QString( "1234567.89" ).toDouble(&ok); // ok == true
该函数忽略前导和尾部空白。
另请参阅 number()、QLocale::setDefault()、QLocale::toDouble() 和trimmed()。
[since 6.6]
emscripten::val QString::toEcmaString() const
将此对象转换为ECMAScript 字符串。
此函数在 Qt 6.6 中引入。
另请参阅 fromEcmaString()。
float QString::toFloat(bool *ok = nullptr) const
返回转换为float
值的字符串。
如果转换溢出,则返回无穷大;如果转换因其他原因(如下溢)失败,则返回 0.0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
警告: QString 内容只能包含有效的数字字符,包括正负号、科学记数法中使用的字符 e 和小数点。包含单位或其他字符会导致转换错误。
字符串转换始终在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toFloat()
由于历史原因,此函数不处理千位组分隔符。如果需要转换此类数字,请使用QLocale::toFloat() 。
示例
QString str1 = "1234.56"; str1.toFloat(); // returns 1234.56 bool ok; QString str2 = "R2D2"; str2.toFloat(&ok); // returns 0.0, sets ok to false QString str3 = "1234.56 Volt"; str3.toFloat(&ok); // returns 0.0, sets ok to false
此函数忽略前导和尾部空白。
另请参阅 number()、toDouble()、toInt()、QLocale::toFloat() 和trimmed()。
QString QString::toHtmlEscaped() const
将纯文本字符串转换为 HTML 字符串,并用 HTML 实体替换 HTML 元字符<
,>
,&
, 和"
。
例如
QString plain = "#include <QtCore>" QString html = plain.toHtmlEscaped(); // html == "#include <QtCore>"
int QString::toInt(bool *ok = nullptr, int base = 10) const
返回使用base 的基数转换为int
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toInt()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toUInt()、toDouble() 和QLocale::toInt()。
QByteArray QString::toLatin1() const
以QByteArray 的形式返回字符串的 Latin-1 表示形式。
如果字符串包含非 Latin1 字符,则返回的字节数组未定义。这些字符可能会被抑制或用问号代替。
另请参阅 fromLatin1()、toUtf8()、toLocal8Bit() 和QStringEncoder 。
QByteArray QString::toLocal8Bit() const
返回字符串的本地 8 位表示形式QByteArray 。
在 Unix 系统上,这等同于toUtf8()。请注意,在 Apple 系统上,此函数不考虑NSString. defaultCStringEncoding或CFStringGetSystemEncoding(),因为这些函数通常返回传统的 "Western (Mac OS Roman) "编码,现代 Apple 操作系统不应使用这种编码。在 Windows 系统中,使用的是系统当前的编码页。
如果该字符串包含任何无法用本地 8 位编码编码的字符,返回的字节数组将是未定义的。这些字符可能会被抑制或替换为其他字符。
另请参阅 fromLocal8Bit()、toLatin1()、toUtf8() 和QStringEncoder 。
long QString::toLong(bool *ok = nullptr, int base = 10) const
返回以base 为基数转换为long
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toLongLong()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toULong()、toInt() 和QLocale::toInt()。
qlonglong QString::toLongLong(bool *ok = nullptr, int base = 10) const
返回以base 为基数转换为long long
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toLongLong()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toULongLong()、toInt() 和QLocale::toLongLong()。
QString QString::toLower() const
返回字符串的小写副本。
QString str = "The Qt PROJECT"; str = str.toLower(); // str == "the qt project"
大小写转换将始终在 "C "本地进行。要进行与本地有关的大小写折叠,请使用QLocale::toLower()
另请参阅 toUpper() 和QLocale::toLower()。
NSString *QString::toNSString() const
从QString 创建一个 NSString。
NSString 会自动释放。
注意: 此函数仅适用于 macOS 和 iOS。
short QString::toShort(bool *ok = nullptr, int base = 10) const
返回以base 为基数转换为short
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toShort()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toUShort()、toInt() 和QLocale::toShort()。
std::string QString::toStdString() const
返回一个包含QString 中数据的 std::string 对象。Unicode 数据使用toUtf8() 函数转换为 8 位字符。
该方法主要用于将QString 传递给接受 std::string 对象的函数。
另请参见 toLatin1()、toUtf8()、toLocal8Bit() 和QByteArray::toStdString()。
std::u16string QString::toStdU16String() const
返回一个 std::u16string 对象,其中包含该QString 中的数据。Unicode 数据与utf16() 方法返回的数据相同。
另请参阅 utf16()、toStdWString() 和toStdU32String()。
std::u32string QString::toStdU32String() const
返回一个包含此QString 中数据的 std::u32string 对象。Unicode 数据与toUcs4() 方法返回的数据相同。
另请参阅 toUcs4()、toStdWString() 和toStdU16String()。
std::wstring QString::toStdWString() const
返回一个包含此QString 中数据的 std::wstring 对象。在 wchar_t 为 2 字节宽的平台上(例如 Windows),std::wstring 采用 UTF-16 编码;在 wchar_t 为 4 字节宽的平台上(大多数 Unix 系统),std::wstring 采用 UTF-32 编码。
这种方法主要用于将QString 传递给接受 std::wstring 对象的函数。
另请参阅 utf16(),toLatin1(),toUtf8(),toLocal8Bit(),toStdU16String() 和toStdU32String().
uint QString::toUInt(bool *ok = nullptr, int base = 10) const
返回使用base 的基数转换为unsigned int
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toUInt()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toInt() 和QLocale::toUInt()。
ulong QString::toULong(bool *ok = nullptr, int base = 10) const
返回使用base 的基数转换为unsigned long
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toULongLong()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number() 和QLocale::toUInt()。
qulonglong QString::toULongLong(bool *ok = nullptr, int base = 10) const
返回使用base 的基数转换为unsigned long long
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toULongLong()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toLongLong() 和QLocale::toULongLong()。
ushort QString::toUShort(bool *ok = nullptr, int base = 10) const
返回使用base 的基数转换为unsigned short
的字符串,默认为 10,且必须介于 2 和 36 之间,否则返回 0。如果转换失败,则返回 0。
如果ok 不是nullptr
,则通过将 *ok 设置为false
来报告失败,通过将 *ok 设置为true
来报告成功。
如果base 为 0,则使用 C 语言惯例:如果字符串以 "0x "开头,则使用基数 16;否则,如果字符串以 "0b "开头,则使用基数 2;否则,如果字符串以 "0 "开头,则使用基数 8;否则,使用基数 10。
字符串转换总是在 "C "本地进行。要进行与本地有关的转换,请使用QLocale::toUShort()
举例说明:
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
此函数忽略前导和尾部空白。
注: Qt 6.4 增加了对 "0b "前缀的支持。
另请参阅 number()、toShort() 和QLocale::toUShort()。
QList<uint> QString::toUcs4() const
以QList<uint> 的形式返回字符串的 UCS-4/UTF-32 表示形式。
UTF-32 是一种 Unicode 编解码器,因此是无损的。该字符串中的所有字符都将以 UTF-32 编码。字符串中任何无效的编码单位序列都将被 Unicode 替换字符(QChar::ReplacementCharacter ,对应于U+FFFD
)替换。
返回的列表不以 0 结尾。
另请参阅 fromUtf8(),toUtf8(),toLatin1(),toLocal8Bit(),QStringEncoder,fromUcs4(), 和toWCharArray().
QString QString::toUpper() const
返回字符串的大写副本。
QString str = "TeXt"; str = str.toUpper(); // str == "TEXT"
大小写转换将始终在 "C "本地进行。若要进行与本地有关的大小写折叠,请使用QLocale::toUpper()。
注意: 在某些情况下,字符串的大写形式可能比原始字符串长。
另请参阅 toLower() 和QLocale::toLower()。
QByteArray QString::toUtf8() const
以QByteArray 的形式返回字符串的 UTF-8 表示形式。
UTF-8 是一种 Unicode 编解码器,可以表示 Unicode 字符串中的所有字符,如QString 。
另请参阅 fromUtf8(),toLatin1(),toLocal8Bit() 和QStringEncoder 。
qsizetype QString::toWCharArray(wchar_t *array) const
用QString 对象中包含的数据填充array 。在 wchar_t 为 2 字节宽的平台(如 Windows)上,数组以 UTF-16 编码;在 wchar_t 为 4 字节宽的平台(大多数 Unix 系统)上,数组以 UTF-32 编码。
array 必须由调用者分配足够的空间来容纳完整的字符串(分配与字符串长度相同的数组总是足够的)。
该函数以array 为单位返回字符串的实际长度。
注意: 此函数不会在数组中追加空字符。
另请参阅 utf16()、toUcs4()、toLatin1()、toUtf8()、toLocal8Bit()、toStdWString() 和QStringView::toWCharArray()。
QString QString::trimmed() const
返回删除了首尾空白的字符串。
空白指QChar::isSpace() 返回true
的任何字符。这包括 ASCII 字符'\t'、'\n'、'\v'、'\f'、'\r'和''。
举例说明:
QString str = " lots\t of\nwhitespace\r\n "; str = str.trimmed(); // str == "lots\t of\nwhitespace"
与simplified() 不同,trimmed() 只保留内部空白。
另请参阅 simplified() 。
void QString::truncate(qsizetype position)
在给定的position 索引处截断字符串。
如果指定的position 索引超出了字符串的末尾,则不会发生任何操作。
举例说明:
QString str = "Vladivostok"; str.truncate(4); // str == "Vlad"
如果position 为负数,则相当于传递 0。
另请参阅 chop()、resize()、first() 和QStringView::truncate()。
const QChar *QString::unicode() const
返回字符串的 Unicode 表示形式。结果在字符串被修改前一直有效。
注意: 返回的字符串可能不是以 "0 "结尾。请使用size() 确定数组的长度。
另请参阅 setUnicode()、utf16() 和fromRawData()。
const ushort *QString::utf16() const
将QString 返回为以 "0 "结尾的无符号短数组。在修改字符串之前,结果一直有效。
返回的字符串按主机字节顺序排列。
[static]
QString QString::vasprintf(const char *cformat, va_list ap)
与asprintf() 方法等价,但使用 va_listap 代替变量参数列表。有关cformat 的解释,请参阅asprintf() 文档。
该方法不调用 va_end 宏,调用者有责任在ap 上调用 va_end 。
另请参阅 asprintf() 。
[noexcept, since 6.7]
std::u16string_view QString::operator std::u16string_view() const
将QString 对象转换为std::u16string_view
对象。
此函数在 Qt 6.7 中引入。
QString &QString::operator+=(const QString &other)
将字符串other 追加到该字符串的末尾,并返回该字符串的引用。
举例说明:
该操作通常非常快(恒定时间),因为QString 在字符串数据的末尾预分配了额外空间,因此每次都无需重新分配整个字符串就能增长。
QString &QString::operator+=(QChar ch)
此函数重载 operator+=()。
将字符ch 添加到字符串中。
QString &QString::operator+=(QLatin1StringView str)
此函数重载 operator+=()。
将str 查看到的 Latin-1 字符串追加到此字符串。
[since 6.0]
QString &QString::operator+=(QStringView str)
此函数重载 operator+=()。
将字符串视图str 追加到此字符串。
此函数在 Qt 6.0 中引入。
[since 6.5]
QString &QString::operator+=(QUtf8StringView str)
此函数重载 operator+=()。
将 UTF-8 字符串视图str 追加到此字符串。
此函数在 Qt 6.5 中引入。
QString &QString::operator+=(const QByteArray &ba)
此函数重载 operator+=()。
将字节数组ba 附加到该字符串。使用fromUtf8() 函数将字节数组转换为 Unicode。如果ba 字节数组中嵌入了任何 NUL 字符('\0'),它们将被包含在转换中。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该函数。例如,如果要确保所有用户可见字符串都经过QObject::tr() 函数,这将非常有用。
QString &QString::operator+=(const char *str)
此函数重载 operator+=()。
将字符串str 追加到该字符串。使用fromUtf8() 函数将 const char 指针转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 禁用此函数。例如,如果您想确保所有用户可见字符串都通过QObject::tr() 转换,这将非常有用。
[noexcept]
QString &QString::operator=(QString &&other)
Move-assignsother 到此QString 实例。
[noexcept]
QString &QString::operator=(const QString &other)
将other 赋值给此字符串,并返回此字符串的引用。
QString &QString::operator=(QChar ch)
此函数重载 operator=()。
设置字符串包含单字符ch 。
QString &QString::operator=(QLatin1StringView str)
此函数重载 operator=()。
将str 查看到的 Latin-1 字符串赋值给此字符串。
QString &QString::operator=(const QByteArray &ba)
此函数重载 operator=()。
将ba 赋值给该字符串。使用fromUtf8() 函数将字节数组转换为 Unicode。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() 处理,这将非常有用。
QString &QString::operator=(const char *str)
此函数重载 operator=()。
将str 赋值给该字符串。使用fromUtf8() 函数将 const char 指针转换为 Unicode。
在编译应用程序时,可以通过定义QT_NO_CAST_FROM_ASCII 或QT_RESTRICTED_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() 处理,这将非常有用。
QChar &QString::operator[](qsizetype position)
以可修改引用的形式返回字符串中指定position 处的字符。
示例
另请参阅 at()。
const QChar QString::operator[](qsizetype position) const
此函数重载 operator[]()。
相关非成员
QString operator+(QString &&s1, const QString &s2)
QString operator+(const QString &s1, const QString &s2)
返回一个字符串,该字符串是s1 和s2 的连接结果。
[since 6.1]
template <typename T> qsizetype erase(QString &s, const T &t)
从字符串s 中移除所有比较结果等于t 的元素。如果有,则返回移除元素的数量。
此函数在 Qt 6.1 中引入。
另请参见 erase_if 。
[since 6.1]
template <typename Predicate> qsizetype erase_if(QString &s, Predicate pred)
从字符串s 中删除谓词pred 返回 true 的所有元素。如果有,则返回移除元素的数量。
此函数在 Qt 6.1 中引入。
另请参见 erase 。
[noexcept]
bool operator!=(const QByteArray &lhs, const QString &rhs)
如果字节数组lhs 不等于rhs 的 UTF-8 编码,则返回true
;否则返回false
。
比较区分大小写。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII
来禁用该操作符。如果要在比较之前将字节数组转换为QString ,则需要明确调用QString::fromUtf8()、QString::fromLatin1() 或QString::fromLocal8Bit() 。
[noexcept]
bool operator!=(const QString &lhs, const QString &rhs)
如果字符串lhs 不等于字符串rhs ,则返回true
;否则返回false
。
另请参见 Comparing Strings 。
[noexcept]
bool operator!=(const char *const &lhs, const QString &rhs)
如果lhs 不等于rhs ,则返回true
;否则返回false
。
对于lhs!= 0,相当于compare(
lhs ,rhs ) != 0
。请注意,没有任何字符串等于lhs 为 0。
[noexcept]
bool operator!=(const QString &lhs, const QByteArray &rhs)
该函数重载了操作符!=()。
rhs 字节数组转换为QUtf8StringView 。如果字节数组中嵌入了任何 NUL 字符('\0'),它们将被包含在转换中。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator!=(const QString &lhs, const QLatin1StringView &rhs)
如果字符串lhs 不等于字符串rhs ,则返回true
。否则返回false
。
此函数重载操作符!=()。
[noexcept]
bool operator!=(const QString &lhs, const char *const &rhs)
该函数重载了 operator!=()。
rhs const char 指针将转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept, since 6.4]
QString operator""_s(const char16_t *str, size_t size)
字面运算符,用 char16_t 字符串字面str 中的第一个size 字符创建QString 。
QString 在编译时创建,生成的字符串数据存储在编译对象文件的只读段中。重复的字面量可以共享同一个只读存储器。该功能可与QStringLiteral 互换使用,但当代码中有许多字符串字面量时,可节省键入次数。
以下代码创建了一个QString :
using namespace Qt::Literals::StringLiterals; auto str = u"hello"_s;
此功能在 Qt 6.4 中引入。
另请参见 Qt::Literals::StringLiterals 。
QString operator+(const QString &s1, const char *s2)
返回一个字符串,该字符串是s1 和s2 的连接结果(s2 使用QString::fromUtf8() 函数转换为 Unicode)。
另请参见 QString::fromUtf8()。
QString operator+(const char *s1, const QString &s2)
返回一个字符串,该字符串是s1 和s2 的连接结果(s1 使用QString::fromUtf8() 函数转换为 Unicode)。
另请参见 QString::fromUtf8()。
[noexcept]
bool operator<(const QByteArray &lhs, const QString &rhs)
如果字节数组lhs 在词法上小于rhs 的 UTF-8 编码,则返回true
;否则返回false
。
比较区分大小写。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII
来禁用该操作符。如果要在比较之前将字节数组转换为QString ,则需要明确调用QString::fromUtf8()、QString::fromLatin1() 或QString::fromLocal8Bit() 。
[noexcept]
bool operator<(const char *const &lhs, const QString &rhs)
如果lhs 在词法上小于rhs ,则返回true
;否则返回false
。对于lhs!= 0,相当于compare(lhs, rhs) < 0
。
另请参见 Comparing Strings 。
[noexcept]
bool operator<(const QLatin1StringView &lhs, const QString &rhs)
此函数重载 operator<()。
如果lhs 在词法上小于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator<(const QString &lhs, const QByteArray &rhs)
该函数重载了 operator<()。
rhs 字节数组将转换为QUtf8StringView 。如果字节数组中嵌入了任何 NUL 字符('\0'),它们将被包含在转换中。
您可以在编译应用程序时禁用该操作符QT_NO_CAST_FROM_ASCII 。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator<(const QString &lhs, const QLatin1StringView &rhs)
此函数重载 operator<()。
如果lhs 在词法上小于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator<(const QString &lhs, const QString &rhs)
此函数重载 operator<()。
如果字符串lhs 在词法上小于字符串rhs ,则返回true
;否则返回false
。
另请参见 Comparing Strings 。
[noexcept]
bool operator<(const QString &lhs, const char *const &rhs)
如果字符串lhs 在词法上小于字符串rhs ,则返回true
。否则返回false
。
此函数重载 operator<()。
rhs const char 指针将转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
QDataStream &operator<<(QDataStream &stream, const QString &string)
将给定的string 写入指定的stream 。
另请参阅 序列化 Qt 数据类型。
[noexcept]
bool operator<=(const QByteArray &lhs, const QString &rhs)
如果字节数组lhs 在词法上小于或等于rhs 的 UTF-8 编码,则返回true
;否则返回false
。
比较区分大小写。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII
来禁用该操作符。如果要在比较之前将字节数组转换为QString ,则需要明确调用QString::fromUtf8()、QString::fromLatin1() 或QString::fromLocal8Bit()。
[noexcept]
bool operator<=(const QString &lhs, const QString &rhs)
如果字符串lhs 在词法上小于或等于字符串rhs ,则返回true
;否则返回false
。
另请参见 Comparing Strings 。
[noexcept]
bool operator<=(const char *const &lhs, const QString &rhs)
如果lhs 在词法上小于或等于rhs ,则返回true
;否则返回false
。对于lhs!= 0,相当于compare(lhs, rhs) <= 0
。
另请参见 Comparing Strings 。
[noexcept]
bool operator<=(const QLatin1StringView &lhs, const QString &rhs)
此函数重载了 operator<=()。
如果lhs 在词法上小于或等于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator<=(const QString &lhs, const QByteArray &rhs)
该函数重载了 operator<=()。
rhs 字节数组将转换为QUtf8StringView 。如果字节数组中嵌入了任何 NUL 字符('\0'),它们将被包含在转换中。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator<=(const QString &lhs, const QLatin1StringView &rhs)
此函数重载了 operator<=()。
如果lhs 在词法上小于或等于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator<=(const QString &lhs, const char *const &rhs)
该函数重载了 operator<=()。
rhs const char 指针会转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator==(const QByteArray &lhs, const QString &rhs)
如果字节数组lhs 等于rhs 的 UTF-8 编码,则返回true
;否则返回false
。
比较区分大小写。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII
来禁用该操作符。如果要在比较之前将字节数组转换为QString ,则需要明确调用QString::fromUtf8()、QString::fromLatin1() 或QString::fromLocal8Bit() 。
[noexcept]
bool operator==(const QLatin1StringView &lhs, const QString &rhs)
此函数重载了 operator==() 函数。
如果lhs 等于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator==(const QString &lhs, const QByteArray &rhs)
此函数重载了 operator==()。
rhs 字节数组转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() 的检验,这将非常有用。
如果字符串lhs 在词法上等于rhs ,则返回true
。否则返回false
。
[noexcept]
bool operator==(const QString &lhs, const QLatin1StringView &rhs)
此函数重载了 operator==() 函数。
如果lhs 等于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator==(const QString &lhs, const QString &rhs)
此函数重载了 operator==() 函数。
如果字符串lhs 等于字符串rhs ,则返回true
;否则返回false
。
注: 此函数处理空字符串与处理空字符串相同,详情请参见Distinction Between Null and Empty Strings 。
另请参见 Comparing Strings 。
[noexcept]
bool operator==(const QString &lhs, const char *const &rhs)
此函数重载了 operator==()。
rhs const char 指针将转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator==(const char *const &lhs, const QString &rhs)
此函数重载了 operator==() 函数。
如果lhs 等于rhs ,则返回true
;否则返回false
。请注意,没有字符串等于lhs 为 0。
等价于lhs != 0 && compare(lhs, rhs) == 0
。
[noexcept]
bool operator>(const QByteArray &lhs, const QString &rhs)
如果字节数组lhs 在词法上大于rhs 的 UTF-8 编码,则返回true
;否则返回false
。
比较区分大小写。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII
来禁用该操作符。如果要在比较之前将字节数组转换为QString ,则需要明确调用QString::fromUtf8()、QString::fromLatin1() 或QString::fromLocal8Bit() 。
[noexcept]
bool operator>(const QString &lhs, const QString &rhs)
如果字符串lhs 在词法上大于字符串rhs ,则返回true
;否则返回false
。
另请参见 Comparing Strings 。
[noexcept]
bool operator>(const char *const &lhs, const QString &rhs)
如果lhs 在词法上大于rhs ,则返回true
;否则返回false
。等同于compare(lhs, rhs) > 0
。
另请参见 Comparing Strings 。
[noexcept]
bool operator>(const QLatin1StringView &lhs, const QString &rhs)
此函数重载 operator>() 。
如果lhs 在词法上大于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator>(const QString &lhs, const QByteArray &rhs)
该函数重载 operator>()。
rhs 字节数组将转换为QUtf8StringView 。如果字节数组中嵌入了任何 NUL 字符('\0'),它们将被包含在转换中。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator>(const QString &lhs, const QLatin1StringView &rhs)
此函数重载 operator>() 。
如果lhs 在词法上大于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator>(const QString &lhs, const char *const &rhs)
该函数重载了 operator>()。
rhs const char 指针将转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator>=(const QByteArray &lhs, const QString &rhs)
如果字节数组lhs 大于或等于rhs 的 UTF-8 编码,则返回true
;否则返回false
。
比较区分大小写。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII
来禁用此操作符。如果要在比较之前将字节数组转换为QString ,则需要明确调用QString::fromUtf8()、QString::fromLatin1() 或QString::fromLocal8Bit() 。
[noexcept]
bool operator>=(const QString &lhs, const QString &rhs)
如果字符串lhs 在词法上大于或等于字符串rhs ,则返回true
;否则返回false
。
另请参见 Comparing Strings 。
[noexcept]
bool operator>=(const char *const &lhs, const QString &rhs)
如果lhs 在词法上大于或等于rhs ,则返回true
;否则返回false
。对于lhs!= 0,相当于compare(lhs, rhs) >= 0
。
另请参见 Comparing Strings 。
[noexcept]
bool operator>=(const QLatin1StringView &lhs, const QString &rhs)
此函数重载操作符>=()。
如果lhs 在词法上大于或等于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator>=(const QString &lhs, const QByteArray &rhs)
该函数重载了 operator>=()。
rhs 字节数组将转换为QUtf8StringView 。如果字节数组中嵌入了任何 NUL 字符('\0'),它们将被包含在转换中。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用此操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
[noexcept]
bool operator>=(const QString &lhs, const QLatin1StringView &rhs)
此函数重载操作符>=()。
如果lhs 在词法上大于或等于rhs ,则返回true
;否则返回false
。
[noexcept]
bool operator>=(const QString &lhs, const char *const &rhs)
该函数重载了 operator>=()。
rhs const char 指针将转换为QUtf8StringView 。
您可以在编译应用程序时通过定义QT_NO_CAST_FROM_ASCII 来禁用该操作符。例如,如果您想确保所有用户可见字符串都经过QObject::tr() ,这将非常有用。
QDataStream &operator>>(QDataStream &stream, QString &string)
将字符串从指定的stream 读取到给定的string 中。
另请参阅 序列化 Qt 数据类型。
宏文档
QStringLiteral(str)
该宏在编译时从字符串字面str 中生成QString 的数据。在这种情况下,创建QString 是免费的,生成的字符串数据存储在编译对象文件的只读段中。
如果代码如下所示
// hasAttribute takes a QString argument if (node.hasAttribute("http-contents-length")) //...
则会创建一个临时的QString ,作为hasAttribute
函数的参数传递。这可能相当昂贵,因为它涉及内存分配和将数据复制/转换为QString 的内部编码。
使用 QStringLiteral 可以避免这种代价:
if (node.hasAttribute(QStringLiteral(u"http-contents-length"))) //...
在这种情况下,QString 的内部数据将在编译时生成;运行时不会进行转换或分配。
使用 QStringLiteral 代替双引号纯 C++ 字符串字面量,可以大大加快根据编译时已知数据创建QString 实例的速度。
注意: 如果字符串被传递给一个函数,而该函数有一个重载,可以接收QLatin1StringView ,并且该重载避免了向QString 的转换,那么QLatin1StringView 仍然比 QStringLiteral 更有效率。例如,QString::operator===() 可以直接与QLatin1StringView 进行比较:
if (attribute.name() == "http-contents-length"_L1) //...
注意: 有些编译器会对包含 US-ASCII 字符集以外字符的字符串进行编码。在这种情况下,请确保在字符串前加上u
。否则,前缀可有可无。
另请参见 QByteArrayLiteral 。
QT_NO_CAST_FROM_ASCII
禁用从 8 位字符串 (char *
) 到 Unicode QStrings 的自动转换,以及从 8 位char
类型 (char
和unsigned char
) 到QChar 的自动转换。
另请参阅 QT_NO_CAST_TO_ASCII,QT_RESTRICTED_CAST_FROM_ASCII, 和QT_NO_CAST_FROM_BYTEARRAY 。
QT_NO_CAST_TO_ASCII
禁用从QString 到 8 位字符串的自动转换 (char *
)。
另请参阅 QT_NO_CAST_FROM_ASCII,QT_RESTRICTED_CAST_FROM_ASCII, 和QT_NO_CAST_FROM_BYTEARRAY 。
QT_RESTRICTED_CAST_FROM_ASCII
禁用从源字面量和 8 位数据到 unicode QStrings 的大多数自动转换,但允许使用QChar(char)
和QString(const char (&ch)[N]
构造函数以及QString::operator=(const char (&ch)[N])
赋值操作符。这提供了QT_NO_CAST_FROM_ASCII 的大部分类型安全优势,但不要求用户代码用QLatin1Char 、QLatin1StringView 或类似的代码来包装字符和字符串字面量。
将该宏与超出 7 位范围的源字符串、非字面量或内嵌 NUL 字符的字面量一起使用是未定义的。
另请参阅 QT_NO_CAST_FROM_ASCII 和QT_NO_CAST_TO_ASCII 。
const char *qPrintable(const QString &str)
以const char *
的形式返回str 。这等同于strtoLocal8Bit ().constData().
在使用 qPrintable() 的语句之后,char 指针将失效。这是因为QString::toLocal8Bit() 返回的数组将退出作用域。
注意: qDebug(),qInfo(),qWarning(),qCritical(),qFatal() 希望 %s 参数采用 UTF-8 编码,而 qPrintable() 会转换为本地 8 位编码。因此,记录字符串时应使用qUtf8Printable() 而不是 qPrintable()。
另请参阅 qUtf8Printable()。
const wchar_t *qUtf16Printable(const QString &str)
以const ushort *
的形式返回str ,但会转换为const wchar_t *
,以避免出现警告。这等同于str.utf16() 加上一些转换。
使用该宏的返回值唯一有用的方法是将其传递给QString::asprintf() 以用于%ls
转换。特别是,返回值不是一个有效的const wchar_t*
!
一般来说,在使用 qUtf16Printable() 的语句之后,指针将失效。这是因为指针可能是从临时表达式中获取的,而临时表达式将退出作用域。
示例
qWarning("%ls: %ls", qUtf16Printable(key), qUtf16Printable(value));
另请参阅 qPrintable(),qDebug(),qInfo(),qWarning(),qCritical() 和qFatal().
const char *qUtf8Printable(const QString &str)
以const char *
的形式返回str 。这等同于strtoUtf8 ().constData().
在使用 qUtf8Printable() 的语句之后,字符指针将失效。这是因为QString::toUtf8() 返回的数组将退出作用域。
示例
qWarning("%s: %s", qUtf8Printable(key), qUtf8Printable(value));
另请参阅 qPrintable()、qDebug()、qInfo()、qWarning()、qCritical() 和qFatal() 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.