Module: Essential Tools Module Group: String Processing Classes
Does not inherit
#include <rw/wstring.h> RWWString s("test string"); s(6,3); // "tri"
The class RWWConstSubString allows some subsection of an RWWString to be addressed by defining a starting position and an extent. For example the 7th through the 11th elements, inclusive, would have a starting position of 7 and an extent of 5. The specification of a starting position and extent can also be done on your behalf by such functions as RWWString::strip() or the overloaded function call operator taking a regular expression as an argument. There are no public constructors other than two that allow you to create an RWWConstSubString from an existing RWWSubString or RWWConstSubString. In general RWWConstSubStrings are constructed by various functions of the RWWString class and then destroyed immediately.
A zero length substring is one with a defined starting position and an extent of zero. It can be thought of as starting just before the indicated character, but not including it. It can be used as an lvalue. A null substring is also legal and is frequently used to indicate that a requested substring, perhaps through a search, does not exist. A null substring can be detected with member function isNull(). However, it cannot be used as an lvalue.
Note that when building on top of the standard library, RWWString uses an alternate implementation that is a thin wrapper on top of std::wstring. The RWWString interface remains the same, with the addition of one method for easy conversion:
std::wstring std();
For applications doing many RWWString->std::wstring conversions, significant speed improvements might be obtained by using the standard library implementation.
None
#include <iostream> #include <rw/wstring.h> int main() { const RWWString s (L"What I tell you is true."); std::cout << "Take the string: [" << s << "]\n"; // Create a string from substrings: const RWWString s2 (s(0, 16) + L"three times " + s(16, 8)); std::cout << "After creating a string from substrings, you have: [" << s2 << "]" << std::endl; return 0; }
Program output (assuming your platform displays wide characters as ASCII if they are in the ASCII character set):
Take the string: [What I tell you is true.] After creating a string from substrings, you have: [What I tell you is three times true.]
RWWConstSubString(const RWWSubString& sp);
Creates an RWWConstSubString from an existing RWWSubString.
RWWConstSubString(const RWWConstSubString& sp);
Creates an RWWConstSubString from an existing RWWConstSubString.
wchar_t operator[](size_t i) const;
Return the ith character of the substring. The first variant can be used as an lvalue, the second cannot. The index i must be between zero and the length of the substring, less one. Bounds checking is performed: if the index is out of range, then an exception of type RWBoundsErr will occur.
wchar_t operator()(size_t i) const;
Return the ith character of the substring. The first variant can be used as an lvalue, the second cannot. The index i must be between zero and the length of the substring, less one. Optional bounds checking is enabled by defining the pre-processor macro RWBOUNDS_CHECK before including <rw/wstring.h>. In this case, if the index is out of range, then an exception of type RWBoundsErr will occur.
bool isNull() const;
Return true if this is a null substring.
size_t length() const;
Return the extent (that is, length) of the RWWConstSubString.
bool operator!() const;
Return true if this is a null substring.
size_t start() const;
Return the starting element of the RWWConstSubString.
bool operator==(const RWWConstSubString&, const RWWConstSubString&); bool operator==(const RWWString&, const RWWConstSubString&); bool operator==(const RWWConstSubString&, const RWWString&); bool operator==(const RWWConstSubString&, const RWWSubString&); bool operator==(const wchar_t*,const RWWConstSubString&); bool operator==(const RWWConstSubString&, const wchar_t*);
Return true if the substring is lexicographically equal to the character string or RWWString argument. Case sensitivity is exact.
bool operator!=(const RWWConstSubString&, const RWWConstSubString&); bool operator!=(const RWWString&, const RWWConstSubString&); bool operator!=(const RWWConstSubString&, const RWWString&); bool operator!=(const wchar_t*, const RWWConstSubString&); bool operator!=(const RWWConstSubString&, const wchar_t*);
Returns the negation of the respective operator==().
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.