Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
The QCString class provides an abstraction of the classic C zero-terminated char array (char *). More...
#include <qcstring.h>
Inherits QByteArray.
The QCString class provides an abstraction of the classic C zero-terminated char array (char *).
QCString inherits QByteArray, which is defined as QMemArray<char>.
Since QCString is a QMemArray, it uses explicit sharing with a reference count.
You might use QCString for text that is never exposed to the user. For text the user sees, you should use QString (which provides implicit sharing, Unicode and other internationalization support).
Note that QCString is one of the weaker classes in Qt; its design is flawed (it tries to behave like a more convenient const char *) and as a result, algorithms that use QCString heavily all too often perform badly. For example, append() is O(length()) since it scans for a null terminator, which makes many algorithms that use QCString scale badly.
Note that for the QCString methods that take a const char * parameter the results are undefined if the QCString is not zero-terminated. It is legal for the const char * parameter to be 0.
A QCString that has not been assigned to anything is null, i.e. both the length and the data pointer is 0. A QCString that references the empty string ("", a single '\0' char) is empty. Both null and empty QCStrings are legal parameters to the methods. Assigning const char * 0 to QCString gives a null QCString.
The length() function returns the length of the string; resize() resizes the string and truncate() truncates the string. A string can be filled with a character using fill(). Strings can be left or right padded with characters using leftJustify() and rightJustify(). Characters, strings and regular expressions can be searched for using find() and findRev(), and counted using contains().
Strings and characters can be inserted with insert() and appended with append(). A string can be prepended with prepend(). Characters can be removed from the string with remove() and replaced with replace().
Portions of a string can be extracted using left(), right() and mid(). Whitespace can be removed using stripWhiteSpace() and simplifyWhiteSpace(). Strings can be converted to uppercase or lowercase with upper() and lower() respectively.
Strings that contain numbers can be converted to numbers with toShort(), toInt(), toLong(), toULong(), toFloat() and toDouble(). Numbers can be converted to strings with setNum().
Many operators are overloaded to work with QCStrings. QCString also supports some more obscure functions, e.g. sprintf(), setStr() and setExpand().
Note on Character Comparisons
In QCString the notion of uppercase and lowercase and of which character is greater than or less than another character is locale dependent. This affects functions which support a case insensitive option or which compare or lowercase or uppercase their arguments. Case insensitive operations and comparisons will be accurate if both strings contain only ASCII characters. (If $LC_CTYPE is set, most Unix systems do "the right thing".) Functions that this affects include contains(), find(), findRev(), operator<(), operator<=(), operator>(), operator>=(), lower() and upper().
Performance note: The QCString methods for QRegExp searching are implemented by converting the QCString to a QString and performing the search on that. This implies a deep copy of the QCString data. If you are going to perform many QRegExp searches on a large QCString, you will get better performance by converting the QCString to a QString yourself, and then searching in the QString.
See also Collection Classes, Implicitly and Explicitly Shared Classes, Text Related Classes and Non-GUI Classes.
See also isNull().
If size > 0, then the first and last characters in the string are initialized to '\0'. All other characters are uninitialized.
See also resize() and isNull().
See also assign().
If str is 0 a null string is created.
See also isNull().
Example:
QCString str( "helloworld", 6 ); // assigns "hello" to str
If str contains a 0 byte within the first maxsize bytes, the resulting QCString will be terminated by this 0. If str is 0 a null string is created.
See also isNull().
The match is case sensitive if cs is TRUE, or case insensitive if cs if FALSE.
See also Note on character comparisons.
Returns the number of times str occurs in the string.
The match is case sensitive if cs is TRUE, or case insensitive if cs if FALSE.
This function counts overlapping substrings, for example, "banana" contains two occurrences of "ana".
See also findRev() and Note on character comparisons.
Counts the number of overlapping occurrences of rx in the string.
Example:
QString s = "banana and panama"; QRegExp r = QRegExp( "a[nm]a", TRUE, FALSE ); s.contains( r ); // 4 matches
See also find() and findRev().
See also detach().
If len is negative, then the current string length is used.
Returns FALSE is len is nonnegative and there is not enough memory to resize the string, otherwise TRUE is returned.
The search is case sensitive if cs is TRUE, or case insensitive if cs is FALSE.
Returns the position of c, or -1 if c could not be found.
See also Note on character comparisons.
Example: network/networkprotocol/nntp.cpp.
Finds the first occurrence of the string str, starting at position index.
The search is case sensitive if cs is TRUE, or case insensitive if cs is FALSE.
Returns the position of str, or -1 if str could not be found.
See also Note on character comparisons.
Finds the first occurrence of the regular expression rx, starting at position index.
Returns the position of the next match, or -1 if rx was not found.
The search is case sensitive if cs is TRUE, or case insensitive if cs is FALSE.
Returns the position of c, or -1 if c could not be found.
See also Note on character comparisons.
Finds the first occurrence of the string str, starting at position index and searching backwards.
The search is case sensitive if cs is TRUE, or case insensitive if cs is FALSE.
Returns the position of str, or -1 if str could not be found.
See also Note on character comparisons.
Finds the first occurrence of the regular expression rx, starting at position index and searching backwards.
Returns the position of the next match (backwards), or -1 if rx was not found.
If index is beyond the end of the string, the string is extended with spaces (ASCII 32) to length index and then c is appended.
Example:
QCString s = "Yes"; s.insert( 3, '!'); // s == "Yes!"
See also remove() and replace().
Inserts string s into the string at position index.
If index is beyond the end of the string, the string is extended with spaces (ASCII 32) to length index and then s is appended.
QCString s = "I like fish"; s.insert( 2, "don't "); // s == "I don't like fish" s = "x"; // index 01234 s.insert( 3, "yz" ); // s == "x yz"
Returns TRUE if the string is empty, i.e. if length() == 0. An empty string is not always a null string.
See example in isNull().
See also isNull(), length() and size().
Example:
QCString a; // a.data() == 0, a.size() == 0, a.length() == 0 QCString b == ""; // b.data() == "", b.size() == 1, b.length() == 0 a.isNull(); // TRUE, because a.data() == 0 a.isEmpty(); // TRUE, because a.length() == 0 b.isNull(); // FALSE, because b.data() == "" b.isEmpty(); // TRUE, because b.length() == 0
See also isEmpty(), length() and size().
The whole string is returned if len exceeds the length of the string.
Example:
QCString s = "Pineapple"; QCString t = s.left( 4 ); // t == "Pine"
Example: network/networkprotocol/nntp.cpp.
If the length of the string exceeds width and truncate is FALSE, then the returned string is a copy of the string. If the length of the string exceeds width and truncate is TRUE, then the returned string is a left(width).
Example:
QCString s("apple"); QCString t = s.leftJustify(8, '.'); // t == "apple..."
See also rightJustify().
Null strings and empty strings have zero length.
See also size(), isNull() and isEmpty().
Example: network/networkprotocol/nntp.cpp.
Example:
QCString s("Credit"); QCString t = s.lower(); // t == "credit"
See also upper() and Note on character comparisons.
Returns a null string if the string is empty or if index is out of range. Returns the whole string from index if index+len exceeds the length of the string.
Example:
QCString s = "Two pineapples"; QCString t = s.mid( 4, 3 ); // t == "pin"
Example: network/networkprotocol/nntp.cpp.
Appends character c to the string and returns a reference to the string.
Assigns a deep copy of str to this string and returns a reference to this string.
If str is 0 a null string is created.
See also isNull().
Prepend s to the string. Equivalent to insert(0,s).
See also insert().
If index is out of range, nothing happens. If index is valid, but index + len is larger than the length of the string, the string is truncated at position index.
QCString s = "Montreal"; s.remove( 1, 4 ); // s == "Meal"
See also insert() and replace().
Example: network/networkprotocol/nntp.cpp.
If index is out of range, nothing is removed and str is appended at the end of the string. If index is valid, but index + len is larger than the length of the string, str replaces the rest of the string from position index.
QCString s = "Say yes!"; s.replace( 4, 3, "NO" ); // s == "Say NO!"
See also insert() and remove().
Replaces every occurrence of rx in the string with str. Returns a reference to the string.
Example:
QString s = "banana"; s.replace( QRegExp("a.*a"), "" ); // becomes "b" s = "banana"; s.replace( QRegExp("^[bn]a"), " " ); // becomes " nana" s = "banana"; s.replace( QRegExp("^[bn]a"), "" ); // NOTE! becomes ""
The last example may be surprising. The semantics are that the regex is applied to the string repeatedly, so first the leading "ba" is removed, then the "na", then the final "na" leaving an empty string.
A '\0'-terminator is set at position len - 1
unless
len == 0
.
Example:
QCString s = "resize this string"; s.resize( 7 ); // s == "resize"
See also truncate().
Example: network/networkprotocol/nntp.cpp.
The whole string is returned if len exceeds the length of the string.
Example:
QCString s = "Pineapple"; QCString t = s.right( 5 ); // t == "apple"
Example: network/networkprotocol/nntp.cpp.
If the length of the string exceeds width and truncate is FALSE, then the returned string is a copy of the string. If the length of the string exceeds width and truncate is TRUE, then the returned string is a left(width).
Example:
QCString s("pie"); QCString t = s.rightJustify(8, '.'); // t == ".....pie"
See also leftJustify().
Returns FALSE if index was out of range and the string could not be expanded, otherwise TRUE.
The format of the string representation is specified by the format character f, and the precision (number of digits after the decimal point) is specified with prec.
The valid formats for f are 'e', 'E', 'f', 'g' and 'G'. The formats are the same as for sprintf(); they are explained in QString::arg().
Sets the string to the string representation of the number n and returns a reference to the string.
Sets the string to the string representation of the number n and returns a reference to the string.
Sets the string to the string representation of the number n and returns a reference to the string.
Sets the string to the string representation of the number n and returns a reference to the string.
Sets the string to the string representation of the number n and returns a reference to the string.
Sets the string to the string representation of the number n and returns a reference to the string.
White space means the decimal ASCII codes 9, 10, 11, 12, 13 and 32.
QCString s = " lots\t of\nwhite space "; QCString t = s.simplifyWhiteSpace(); // t == "lots of white space"
See also stripWhiteSpace().
If the string is shorter than 256 characters, this sprintf() calls resize(256) to decrease the chance of memory corruption. The string is resized back to its actual length before sprintf() returns.
Example:
QCString s; s.sprintf( "%d - %s", 1, "first" ); // result < 256 chars QCString big( 25000 ); // very long string big.sprintf( "%d - %s", 2, longString ); // result < 25000 chars
Warning: All vsprintf() implementations will write past the end of the target string (*this) if the format specification and arguments happen to be longer than the target string, and some will also fail if the target string is longer than some arbitrary implementation limit.
Giving user-supplied arguments to sprintf() is asking for trouble. Sooner or later someone will paste a 3000-character line into your application.
White space means the decimal ASCII codes 9, 10, 11, 12, 13 and 32.
Example:
QCString s = " space "; QCString t = s.stripWhiteSpace(); // t == "space"
See also simplifyWhiteSpace().
double
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
float
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
int
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
long
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
short
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
unsigned int
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
unsigned long
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
unsigned short
value.
If ok is nonnull, *ok is set to FALSE if the string is not a number, or if it has trailing garbage; otherwise *ok is set to TRUE.
Equivalent to calling resize(pos+1).
Example:
QCString s = "truncate this string"; s.truncate( 5 ); // s == "trunc"
See also resize().
Example:
QCString s( "Debit" ); QCString t = s.upper(); // t == "DEBIT"
See also lower() and Note on character comparisons.
Equivalent to qstrcmp(s1, s2) != 0.
Returns TRUE if s1 and s2 are different; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) != 0.
Returns TRUE if s1 and s2 are different; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) != 0.
Returns a string which consists of the concatenation of s1 and s2.
Returns a string which consists of the concatenation of s1 and s2.
Returns a string which consists of the concatenation of s and c.
Returns a string which consists of the concatenation of c and s.
Equivalent to qstrcmp(s1, s2) < 0.
See also Note on character comparisons.
Returns TRUE if s1 is less than s2; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) < 0.
See also Note on character comparisons.
See also Format of the QDataStream operators.
Equivalent to qstrcmp(s1, s2) <= 0.
See also Note on character comparisons.
Returns TRUE if s1 is less than or equal to s2; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) <= 0.
See also Note on character comparisons.
Equivalent to qstrcmp(s1, s2) == 0.
Returns TRUE if s1 and s2 are equal; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) == 0.
Returns TRUE if s1 and s2 are equal; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) == 0.
Equivalent to qstrcmp(s1, s2) > 0.
See also Note on character comparisons.
Returns TRUE if s1 is greater than s2; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) > 0.
See also Note on character comparisons.
Equivalent to qstrcmp(s1, s2) >= 0.
See also Note on character comparisons.
Returns TRUE if s1 is greater than or equal to s2; otherwise returns FALSE.
Equivalent to qstrcmp(s1, s2) >= 0.
See also Note on character comparisons.
See also Format of the QDataStream operators.
This function is normally part of the C library. Qt implements memmove() for platforms that do not provide it.
memmove() copies len bytes from src into dst. The data is copied correctly even if src and dst overlap.
A safe strcmp() function.
Compares str1 and str2. Returns a negative value if str1 is less than str2, 0 if str1 is equal to str2 or a positive value if str1 is greater than str2.
Special case I: Returns 0 if str1 and str2 are both null.
Special case II: Returns a random nonzero value if str1 is null or str2 is null (but not both).
See also qstrncmp(), qstricmp(), qstrnicmp() and Note on character comparisons.
A safe strcpy() function.
Copies all characters up to and including the '\0' from src into dst and returns a pointer to dst.
Returns a duplicate string.
Allocates space for a copy of src, copies it, and returns a pointer to the copy. If src is null, it immediately returns 0.
The returned string has to be deleted using delete[].
A safe stricmp() function.
Compares str1 and str2 ignoring the case.
Returns a negative value if str1 is less than str2, 0 if str1 is equal to str2 or a positive value if str1 is greater than str2.
Special case I: Returns 0 if str1 and str2 are both null.
Special case II: Returns a random nonzero value if str1 is null or str2 is null (but not both).
See also qstrcmp(), qstrncmp(), qstrnicmp() and Note on character comparisons.
A safe strncmp() function.
Compares str1 and str2 up to len bytes.
Returns a negative value if str1 is less than str2, 0 if str1 is equal to str2 or a positive value if str1 is greater than str2.
Special case I: Returns 0 if str1 and str2 are both null.
Special case II: Returns a random nonzero value if str1 is null or str2 is null (but not both).
See also qstrcmp(), qstricmp(), qstrnicmp() and Note on character comparisons.
A safe strncpy() function.
Copies all characters up to len bytes from src (or less if src is shorter) into dst and returns a pointer to dst. Guarantees that dst is '\0'-terminated. If src or dst is null, returns 0 immediately.
See also qstrcpy().
A safe strnicmp() function.
Compares str1 and str2 up to len bytes ignoring the case.
Returns a negative value if str1 is less than str2, 0 if str1 is equal to str2 or a positive value if str1 is greater than str2.
Special case I: Returns 0 if str1 and str2 are both null.
Special case II: Returns a random nonzero value if str1 is null or str2 is null (but not both).
See also qstrcmp(), qstrncmp(), qstricmp() and Note on character comparisons.
This file is part of the Qt toolkit. Copyright © 1995-2002 Trolltech. All Rights Reserved.
Copyright © 2002 Trolltech | Trademarks | Qt version 3.0.4
|