所有的QString的方法都使用const char *参数,const char *被解释为经典的C风格的以零结尾的ASCII字符串。所以const char *参数为0是合法的。如果const char *不是以零结尾的,结果是不确定的。把经典的C字符串复制到QString的函数将不会复制结尾的0字符。QString的QChar数组(可以通过unicode()返回)通常不以零结尾。如果你需要把QString传递到一个需要C的以零结尾的字符串,请使用latin1()。
QString::null是一个零QString。当排序的时候,空字符串在最前面,然后是非空字符串,然后才是零字符串。我们建议使用if ( !str.isNull() ),而不是if ( !str )来检测非零字符串,关于解释说明也可以参考operator!()。
注意如果你发现你正在混合使用QCString、QString和QByteArray,这将会导致很多不必要的复制并且也许会预示着你正在处理的真实自然数据是不确定的。如果数据是以零结尾的八位数据,请使用QCString;如果它是没有结尾的(也就是包含0)八位数据,请使用QByteArray;如果它是文本,请使用QString。
字符串列表可以使用QStringList类来处理。你可以使用QStringList::split()来把一个字符串分割为一个字符串列表,并且可以使用QStringList::join()把一个字符串列表连接成一个使用随意间隔符的字符串。你也可以使用QStringList::grep()从一个字符串列表中获得包含特定子字符串或者包含匹配特定的regex的字符串列表。
C程序员的注意事项
由于C++的类型系统和QString是隐含共享的事实,QString也许会被看做整型或者其它简单基本类型。例如:
QString boolToString( bool b ) { QString result; if ( b ) result = "True"; else result = "False"; return result; }
变量result是一个分配在栈中的自动变量。当return被调用时,因为我们正在返回值,复制构造函数被调用并且这个字符串的一个复制被返回。(我们要感谢隐含共享,没有实际的复制发生,请看下面。)
在Qt的源代码中,你将会遇到想这样的QString的用法:
QString func( const QString& input ) { QString output = input; // 处理输出 return output; }
从input到output的“复制”几乎和复制指针一样快,因为后面的场景复制是通过增加引用计数器来实现的。QString操作是基于写时复制的,只有在实例发生实际改变时,才会被复制。
如果你想不丢失任何Unicode信息的情况下创建一个QString的深度复制,那么你应该使用QString中用QChar*作为参数的构造函数。例如:
QString a("abcd"); QString b( a.unicode(), b.length() );
另外,使用QString中用const char*参数的构造函数就足够了。例如:
QString a("abcd"); QString b( a.latin1() );
也可以参考QChar、QCString、QByteArray、QConstString、隐含和明显共享类、文本相关类和非图形用户界面类。
成员类型文档
section()。
成员函数文档
isNull()。
QChar ch )
构造一个长度为一个字符,内容为给定字符ch的字符串。
QString & s )
构造一个s的隐含共享的复制。这是短时间的,因为引用计数被使用。
QByteArray & ba )
构造一个被解释为经典C字符串的ba的深度复制的字符串。
QChar * unicode, uint length )
构造一个QChar数组中开始length个字符的深度复制的字符串。
如果unicode和length为0,那么一个零字符串被创建。
如果只是unicode为0,字符串为空,但是被分配为length个字符空间——无论如何QString可以自动扩展,但是这也许会在一些情况下提高速度。我们建议根据这个目的使用简单的构造函数和setLength(),因为它的结果是有更多的可读代码。
深度复制的字符串。
如果str,那么一个零字符串被创建。
这是一个抛出构造函数,但是它是完全安全的:把一个Latin1的const char*转化到QString保存了所有的信息。当你编译你的应用程序时,你可以通过定义QT_NO_CAST_ASCII来关闭这个构造函数。你可以使用setLatin1()、fromLatin1()、fromLocal8Bit()和fromUtf8()来生成QString。或者无论什么适合你的八位数据的编码方式。
也可以参考isNull()。
把str添加到字符串中并且返回结果的引用。
string = "Test"; string.append( "ing" ); // string == "Testing"
等于operator+=()。
QString & operator+=()。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
把字符ch添加到字符串中并且返回结果的引用。
等于operator+=()。
QString QString & a, int fieldwidth = 0 ) const
这个函数将返回使用a来替换最低层出现的%i(i为'1'或'2'或……'9')的字符串。
fieldwidth值指定了填充到a中的最小空间。正值将产生右对齐文本,负值将产生左对齐文本。
QString firstName( "Joe" ); QString lastName( "Bloggs" ); QString fullName; fullName = QString( "First name is '%1', last name is '%2'" ) .arg( firstName ) .arg( lastName ); // fullName == First name is 'Joe', last name is 'Bloggs'
警告:如果你是用arg()来构造一个想上面实例中的“真正”的句子,那么这可能导致一些翻译的问题(当你使用tr()函数时)。
如果没有%i模式,一个警告信息(qWarning())被输出并且这个文本被添加到字符串的末尾。这被做为错误恢复的功能并且不应该在正确的代码中出现。
也可以参考QObject::tr()。
QString QString( "Decimal 63 is %1 in hexadecimal" ) .arg( 63, 0, 16 ); // str == "Decimal 63 is 3f in hexadecimal"
QString QString QString QString QString QString QString QChar a, int fieldwidth = 0 ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
QString QString( "'E' format, precision 3, gives %1" ) .arg( d, 0, 'E', 3 ); // ds == "1.234E+001"
const char * latin1()并且返回结果。
实例:network/networkprotocol/nntp.cpp。
QChar QChar ch = string.at( 4 ); // ch == 'e'
如果QString不是常量(也就是const QString)或者const&(也就是const QString&),那么at()的非常量重载将被用来替代。
QCharRef QString & s1, const QString & s2 ) [静态]
对s1和s2进行词典比较,如果s1小于、等于或者大于s2,就返回小于、等于或者大于0的整数。
这个比较是专有的基于字符的数字Unicode值并且非常快,但是不是人们所期待的。排序用户界面字符串请考虑使用QString::localeAwareCompare()。
int a = QString::compare( "def", "abc" ); // a > 0 int b = QString::compare( "abc", "def" ); // b < 0 int c = QString::compare(" abc", "abc" ); // c == 0
int QString & s ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
对这个字符串和s进行词典比较,如果它小于、等于或者大于s,就返回小于、等于或者大于0的整数。
void QChar(0x0041)('A')和QChar(0x0308)(Unicode accent diaresis),给定的QChar(0x00c4)(德语的A元音变音)。
等于at(i)。
也可以参考ref()。
int QChar c, bool cs = TRUE ) const
返回在这个字符串中字符c出现的次数。
如果cs为真,那么匹配是区分大小写的。如果cs为假,那么匹配是不区分大小写的。
QString string( "Trolltech and Qt" ); int i = string.contains( 't', FALSE ); // i == 3
实例:fileiconview/qfileiconview.cpp和mdi/application.cpp。
int QString & str, bool cs = TRUE ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
返回在这个字符串中str出现的次数。
如果cs为真,那么匹配是区分大小写的。如果cs为假,那么匹配是不区分大小写的。
这个函数计算重叠的字符串,所以在下面的实例中,“bananas”中有两个“ana”的实例。
QString str( "bananas" ); int i = str.contains( "ana" ); // i == 2
也可以参考findRev()。
int QRegExp & rx ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
返回在字符串中正则表达式rx出现的次数。
这个函数计算重叠的字符串,所以在下面的实例中,有四个“ana”或者“ama”的实例。
QString str = "banana and panama"; QRegExp rxp = QRegExp( "a[nm]a", TRUE, FALSE ); int i = str.contains( rxp ); // i == 4
如果字符串以s结尾,返回真,否则返回假。
也可以参考startsWith()。
实例:chart/main.cpp。
QString & QChar c, int len = -1 )
填充字符串为len个字符的值c,并且返回字符串的引用。
如果len为负数(默认),当前字符串长度被使用。
QString str; str.fill( 'g', 5 ); // string == "ggggg"
int QRegExp & rx, int index = 0 ) const
从位置index开始,找到常量正则表达式rx第一次出现的位置。如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。(对于反向搜索也可以参考findRev()。)
返回rx第一次出现的位置,如果rx没有被找到,返回-1。
QString string( "bananas" ); int i = string.find( QRegExp("an"), 0 ); // i == 1
也可以参考findRev()、replace()和contains()。
int QChar c, int index = 0, bool cs = TRUE ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
从位置index开始,找到字符c第一次出现的位置。如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。(对于反向搜索也可以参考findRev()。)
如果cs为真,那么匹配是区分大小写的。如果cs为假,那么匹配是不区分大小写的。
返回c第一次出现的位置,如果c没有被找到,返回-1。
int QString & str, int index = 0, bool cs = TRUE ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
从位置index开始,找到字符串str第一次出现的位置。如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。(对于反向搜索也可以参考findRev()。)
如果cs为真,那么匹配是区分大小写的。如果cs为假,那么匹配是不区分大小写的。
返回str第一次出现的位置,如果str没有被找到,返回-1。
int find(QString(str), index)。
int findRev(QString(str), index)。
int QChar c, int index = -1, bool cs = TRUE ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
从位置index开始并且反向搜索,找到字符c第一次出现的位置。如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。
返回c第一次出现的位置,如果c没有被找到,返回-1。
如果cs为真,那么匹配是区分大小写的。如果cs为假,那么匹配是不区分大小写的。
QString string( "bananas" ); int i = string.findRev( 'a' ); // i == 5
int QString & str, int index = -1, bool cs = TRUE ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
从位置index开始并且反向搜索,找到字符串str第一次出现的位置。如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。
返回str第一次出现的位置,如果str没有被找到,返回-1。
如果cs为真,那么匹配是区分大小写的。如果cs为假,那么匹配是不区分大小写的。
QString string("bananas"); int i = string.findRev( "ana" ); // i == 3
int QRegExp & rx, int index = -1 ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
从位置index开始并且反向搜索,找到正则表达式rx第一次出现的位置。如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。
返回rx第一次出现的位置,如果rx没有被找到,返回-1。
QString string( "bananas" ); int i = string.findRev( QRegExp("an") ); // i == 3
也可以参考find()。
QString fromLatin1( "123456789", 5 ); // str == "12345"
实例:listbox/listbox.cpp和network/mail/smtp.cpp。
QString fromLocal8Bit( "123456789", 5 ); // str == "12345"
local8Bit被假设使用本地指定的格式编码的。
关于Unicode字符串的编码/解码更多变化请参考QTextCodec。
QString fromUtf8( "123456789", 5 ); // str == "12345"
关于Unicode字符串的编码/解码更多变化请参考QTextCodec。
实例:fonts/simple-qfont-demo/viewer.cpp。
把s插入到字符串的index位置之前。
如果index超过字符串的结尾,字符串被填充空格扩展到index长度并且然后s被添加,返回这个字符串的引用。
QString string( "I like fish" ); str = string.insert( 2, "don't " ); // str == "I don't like fish"
实例:themes/themes.cpp和xform/xform.cpp。
QString & QChar * s, uint len )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
把s中的字符插入到字符串的index位置之前len次并且返回这个字符串的引用。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
把c插入到字符串的index位置之前并且返回这个字符串的引用。
如果index超过字符串的结尾,字符串被填充空格(ASCII码为32)扩展到index长度并且然后s被添加,返回这个字符串的引用。
QString & length() == 0,返回真。因此,零字符串也是空字符串。
QString a( "" ); a.isEmpty(); // 真 a.isNull(); // 假 QString b; b.isEmpty(); // 真 b.isNull(); // 真
实例:addressbook/mainwindow.cpp、chart/chartform.cpp、chart/chartform_canvas.cpp、network/networkprotocol/nntp.cpp、qmag/qmag.cpp和qwerty/qwerty.cpp。
bool unicode() == 0,a.length() == 0 a.isNull(); // 真,因为a.unicode() == 0 a.isEmpty(); // 真
实例:i18n/main.cpp和qdir/qdir.cpp。
const char * QTextCodec类。
这个函数主要对于使用Unicode的开机时的老程序有用处。
只要源字符串的一个未修改复制存在,这个结果就保持有效。
实例:fileiconview/qfileiconview.cpp和network/networkprotocol/nntp.cpp。
QString left( 4 ); // t == "Pine"
QString QChar fill = ' ', bool truncate = FALSE ) const
返回一个长度为width的,包含这个字符串,并且用fill填补的字符串。
如果truncate为假并且字符串的长度超过width,那么返回的字符串是这个字符串的复制。
如果truncate为真并且字符串的长度超过width,那么这个字符串的复制中超过width长度的任何字符都被移除并且这个复制被返回。
QString s( "apple" ); QString t = s.leftJustify( 8, '.' ); // t == "apple..."
也可以参考rightJustify()。
实例:fileiconview/qfileiconview.cpp、network/networkprotocol/nntp.cpp、rot13/rot13.cpp和themes/themes.cpp。
QCString QTextCodec::codecForLocale()。在Windows上,它是系统定义的编码方式。在Mac OS X上,总是使用utf8作为编码方式。
关于Unicode字符串的编码/解码更多变化请参考QTextCodec。
也可以参考QString::fromLocal8Bit()、latin1()和utf8()。
int QString & s1, const QString & s2 ) [静态]
对s1和s2进行比较,如果s1小于、等于或者大于s2,就返回小于、等于或者大于0的整数。
这个比较是基于本地的并且也是基于平台的方式。使用这个函数可以把排好序的字符串列表呈现给用户。
也可以参考QString::compare()和QTextCodec::locale()。
int QString & s ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
对这个字符串和s进行比较。
QString lower(); // str == "trolltech"
也可以参考upper()。
QString mid( 5, 4 ); // t == "pine"
实例:network/mail/smtp.cpp、qmag/qmag.cpp和themes/themes.cpp。
QString number( a, 16 ); // str == "3f" QString str = QString::number( a, 16 ).upper(); // str == "3F"
也可以参考setNum()。
实例:action/application.cpp、application/application.cpp、chart/chartform.cpp、fonts/simple-qfont-demo/viewer.cpp、mdi/application.cpp和sql/overview/extract/main.cpp。
QString QString( "'E' format, precision 3, gives %1" ) .arg( d, 0, 'E', 3 ); // ds == "1.234E+001"
也可以参考setNum()。
latin1()。请确定已经看到这里的警告文档。注意对于你希望严格遵守Unicode的新代码,当你编译你的代码时,你可以定义QT_NO_ASCII_CAST宏来隐藏这个函数,这样自动抛出就不会被完成。这样可以添加你可以抓住在operator!()下描述的编程错误的优点。
bool isNull() ) doSomethingWith(name);
把str添加到字符串中并且返回结果的引用。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
把字符c添加到字符串中并且返回结果的引用。
设置字符串只包含单个字符c。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
把s的一个浅度复制赋值给这个字符串并且返回这个字符串的引用。这是非常快的,因为字符串没有被实际复制。
QString & 深度复制赋值给这个字符串并且返回这个字符串的引用。
如果str为0,那么零字符串被创建。
也可以参考isNull()。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
把解释为经典C字符串的cs的一个深度复制赋值给这个字符串并且返回这个字符串的引用。
QString & QChar QCharRef QCharRef就可以引用字符串中的有效(零)字符。
QCharRef内部类可以被常量QChar使用,但是如果你对它赋值,你就会改变初始字符串(它将会自动分离,因为QString是写时复制)。如果你试图把结果作为QChar以外的东西使用,你将得到编译错误。
在字符串开始处插入s并且返回这个字符串的引用。
等于insert(0, s)。
QString string = "42"; string.prepend( "The answer is " ); // string == "The answer is 42"
也可以参考insert()。
也可以参考insert()。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
在字符串开始处插入ch并且返回这个字符串的引用。
等于insert(0, ch)。
也可以参考insert()。
QChar & QChar的引用,如果需要就是用QChar::null扩展字符串。这个结果引用可以立即被赋值或者使用,但是一旦初始字符串发生了改变,它将会变为无效。
QString string("ABCDEF"); QChar ch = string.ref( 3 ); // ch == 'D'
也可以参考constref()。
QString & remove( 1, 4 ); // string == "Meal"
从字符串中的index位置开始使用s替换len个字符,并且返回这个字符串的引用。
如果index超出字符串的长度,就什么也不被删除并且s被添加到字符串结尾。如果 index有效并且index加上len超过字符串的结尾,那么这个字符串将从index开始被截短,并且s被添加到字符串结尾。
QString string( "Say yes!" ); string = string.replace( 4, 3, "NO" ); // string == "Say NO!"
实例:listviews/listviews.cpp、network/networkprotocol/nntp.cpp和qmag/qmag.cpp。
QString & QChar * s, uint slen )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
从字符串中的index位置开始使用s中的slen个字符的QChar数据替换len个字符,并且返回这个字符串的引用。
QString & QRegExp & rx, const QString & str )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
用str替换字符串中出现的每一个正则表达式rx。返回这个字符串的引用。
QString string = "banana"; string = string.replace( QRegExp("an"), "" ); // string == "ba"
QString right( 5 ); // t == "apple"
实例:fileiconview/qfileiconview.cpp。
QString QChar fill = ' ', bool truncate = FALSE ) const
返回一个长度为width的,包含fill填补的字符串,后面跟着这个字符串。
如果truncate为假并且字符串的长度超过width,那么返回的字符串是这个字符串的复制。
如果truncate为真并且字符串的长度超过width,那么这个字符串的复制中超过width长度的任何字符都被移除并且这个复制被返回。
QString string( "apple" ); QString t = string.rightJustify( 8, '.' ); // t == "...apple"
也可以参考leftJustify()。
QString QChar sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
这个函数用来返回字符串的一部分。
这个字符串被看作由字符sep分隔开的顺序的区段。返回的从位置start到位置end(两个都包含)的区段组成的字符串。如果end没有被指定,那么从位置start开始到字符串的结尾的所有区段都被返回。区段是从左面是0、1、2等等计数,或者从右面-1、-2等等计数的。
flags参数可以用来影响这个函数行为的特征,例如是否区分大小写,是否忽略空区段并且如何处理开始和结尾的分隔符,请参考SectionFlags。
QString csv( "forename,middlename,surname,phone" ); QString s = csv.section( ',', 2, 2 ); // s == "surname" QString path( "/usr/local/bin/myapp" ); // First field is empty QString s = path.section( '/', 3, 4 ); // s == "bin/myapp" QString s = path.section( '/', 3, 3, SectionSkipEmpty ); // s == "myapp"
如果start或者end为负数,我们就从字符串的右面开始计数,最右面的是-1,接着是-2,依此类推。
QString csv( "forename,middlename,surname,phone" ); QString s = csv.section( ',', -3, -2 ); // s == "middlename,surname" QString path( "/usr/local/bin/myapp" ); // First field is empty QString s = path.section( '/', -1 ); // s == "myapp"
也可以参考QStringList::split()。
QString QString QString QString & sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
这个函数用来返回字符串的一部分。
这个字符串被看作由字符串sep分隔开的顺序的区段。返回的从位置start到位置end(两个都包含)的区段组成的字符串。如果end没有被指定,那么从位置start开始到字符串的结尾的所有区段都被返回。区段是从左面是0、1、2等等计数,或者从右面-1、-2等等计数的。
flags参数可以用来影响这个函数行为的特征,例如是否区分大小写,是否忽略空区段并且如何处理开始和结尾的分隔符,请参考SectionFlags。
QString data( "forename**middlename**surname**phone" ); QString s = data.section( "**", 2, 2 ); // s == "surname"
如果start或者end为负数,我们就从字符串的右面开始计数,最右面的是-1,接着是-2,依此类推。
QString data( "forename**middlename**surname**phone" ); QString s = data.section( "**", -3, -2 ); // s == "middlename**surname"
也可以参考QStringList::split()。
QString QRegExp & reg, int start, int end = 0xffffffff, int flags = SectionDefault ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
这个函数用来返回字符串的一部分。
这个字符串被看作由正则表达式reg分隔开的顺序的区段。返回的从位置start到位置end(两个都包含)的区段组成的字符串。如果end没有被指定,那么从位置start开始到字符串的结尾的所有区段都被返回。区段是从左面是0、1、2等等计数,或者从右面-1、-2等等计数的。
flags参数可以用来影响这个函数行为的特征,例如是否区分大小写,是否忽略空区段并且如何处理开始和结尾的分隔符,请参考SectionFlags。
QString line( "forename/tmiddlename surname /t /t phone" ); QRegExp sep( "/s+" ); QString s = line.section( sep, 2, 2 ); // s == "surname"
如果start或者end为负数,我们就从字符串的右面开始计数,最右面的是-1,接着是-2,依此类推。
QString line( "forename/tmiddlename surname /t /t phone" ); QRegExp sep( "//s+" ); QString s = line.section( sep, -3, -2 ); // s == "middlename surname"
警告: QRegExp这一部分比其它字符串和字符的重载版本要花费更多。
也可以参考QStringList::split()和simplifyWhiteSpace()。
void QChar c )
这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。
设置在index位置的字符为c并且如果需要使用空格来扩展这个字符串。
这个方法在Qt 3.x中是多余的,因为operator[]可以在需要的时候扩展字符串。
void setLength( newLen ) // 分配一些空间 while ( ... ) { result[resultLength++] = ... // 填充(部分的)空格作为数据 } result.truncate[resultLength]; // 并且去掉不确定的垃圾
如果newLen是不足的话,最坏的情况就是将会循环将会变慢。
也可以参考truncate()、isNull()、isEmpty()和length()。
QString & setNum( 1234 ); // string == "1234"
QString & QString & QString & QString & QString & QString & arg()。
QString & QChar * unicode, uint len )
重新定义字符串的大小为len并且把unicode复制到字符串中。如果unicode为零,什么都不被复制,但是字符串还是被重新定义为len。如果len为0,那么字符串变为零字符串。
QString QChar::isSpace()返回真的字符。这里面包括十进制为9(TAB)、10(LF)、11(VT)、12(FF)、13(CR)和32(Space)的UNICODE字符。
QString string = " lots/t of/nwhite space "; QString t = string.simplifyWhiteSpace(); // t == "lots of white space"
也可以参考stripWhiteSpace()。
QString & utf8()编码字符串。格式化字符串cformat希望是一个Latin1的。如果你需要一个Unicode格式字符串,使用arg()来替代。为了完全支持Unicode的类型安全的字符串构建,你可以像这样使用QTextOStream:
QString str; QString s = ...; int x = ...; QTextOStream( &str ) << s << " : " << x;
对于翻译,特别是如果字符串包含超过一个的转义序列,你应该考虑使用arg()来替代它。这将允许翻译者来控制替换的顺序并且支持Unicode。
也可以参考arg()。
实例:dclock/dclock.cpp、forever/forever.cpp、layout/layout.cpp、qmag/qmag.cpp、scrollview/scrollview.cpp、tooltip/tooltip.cpp和xform/xform.cpp。
bool QString & s ) const
如果字符串以s开始,返回真,否则返回假。
QString string("Bananas"); bool a = string.startsWith("Ban"); // a == TRUE
也可以参考endsWith()。
QString QChar::isSpace()返回真的字符。这里面包括十进制为9(TAB)、10(LF)、11(VT)、12(FF)、13(CR)和32(Space)的UNICODE字符。
QString string = " white space "; QString s = string.stripWhiteSpace(); // s == "white space"
也可以参考simplifyWhiteSpace()。
double toDouble(); // a == 1234.56
也可以参考number()。
float number()。
int toInt( &ok, 16 ); // hex == 255, ok == TRUE int dec = str.toInt( &ok, 10 ); // dec == 0, ok == FALSE
也可以参考number()。
long number()。
short number()。
ulong number()。
ushort truncate( 5 ); // s == "trunc"
也可以参考setLength()。
const QChar * QString upper(); // t == "TEXT"
也可以参考lower()。
实例:scribble/scribble.cpp和sql/overview/custom1/main.cpp。
也可以参考QString::fromUtf8()、local8Bit()和latin1()。
相关函数
bool QString & s1, const QString & s2 )
如果s1在词典中不等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) != 0。
bool QString & s1, const char * s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中不等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) != 0。
bool QString & s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中不等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) != 0。
const QString QString & s1, const QString & s2 )
返回字符串s1和字符串s2连接的结果的字符串。
等于s1.append(s2)。
const QString QString & s1, const char * s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
返回字符串s1和字符串s2连接的结果的字符串。
等于s1.append(s2)。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
返回字符串s1和字符串s2连接的结果的字符串。
const QString QString & s, char c )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
返回字符串s和字符c连接的结果的字符串。
等于s.append(c)。
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
返回字符c和字符串s连接的结果的字符串。
等于s.prepend(c)。
bool QString & s1, const char * s2 )
如果s1在词典中小于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) < 0。
bool QString & s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中小于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) < 0。
QDataStream & QDataStream & s, const QString & str )
把字符串str写到流s中。
也可以参考QDataStream操作符的格式。
bool QString & s1, const char * s2 )
如果s1在词典中小于或等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1,s2) <= 0。
bool QString & s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中小于或等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1,s2) <= 0。
bool QString & s1, const QString & s2 )
如果s1在词典中等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) != 0。
bool QString & s1, const char * s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) != 0。
bool QString & s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) != 0。
bool QString & s1, const char * s2 )
如果s1在词典中大于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) > 0。
bool QString & s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中大于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) > 0。
bool QString & s1, const char * s2 )
如果s1在词典中大于或等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) >= 0。
bool QString & s2 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
如果s1在词典中大于或等于s2,返回真,否则如果不是,返回假。这个比较是区分大小写的。注意一个零字符串不等于一个非零的空字符串。
等于compare(s1, s2) >= 0。
QDataStream & QDataStream & s, QString & str )
从流s中读取一个字符串到字符串str中。
也可以参考QDataStream操作符的格式。