バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWCString
#include <rw/cstring.h> RWCString a;
このクラスは、主に単一バイト文字セット (SBCS; ASCII や ISO Latin-1 など) を処理するために作られていますが、注意して使用すれば複数バイト文字セット (MBCS) も扱うことができます。MBCS を扱うときには、次の 2 つの点に注意しなければなりません。
このクラスは、コピー・オン・ライト (copy on write: 書き込み時コピー) と言われる技法を使用して実装されています。この技法では、コピーコンストラクタと代入演算子は古いオブジェクトを参照するため、非常に高速です。実際のコピーは、書き込みが行われるときだけ、つまりオブジェクトが変更されるときだけ行われます。その結果パフォーマンスは向上し、またコピー型の意味はわかりやすいものになります。
クラス RWCSubString は、部分文字列の抽出と変更をサポートします。
#include <rw/re.h> #include <rw/rstream.h> main(){ RWCString a("There is no joy in Beantown."); cout << a << endl << "becomes...." << endl; RWCRExpr re("[A-Z][a-z]*town"); // "town" を含む文字列 (先頭のみ // 大文字) a.replace(re, "Redmond"); cout << a << endl; } |
There is no joy in Redmond. |
enum RWCString::caseCompare { exact, ignoreCase }
enum RWCString::scopeType { one, all }
RWCString();
RWCString(const char* cs);
RWCString(const char* cs, size_t N);
RWCString(RWSize_T ic);
RWCString(const RWCString& str);
RWCString(const RWCSubString& ss);
RWCString(char c);
RWCString(char c, size_t N);
operator const char*() const;
RWCString& operator=(const char* cs);
RWCString& operator=(const RWCString& str);
RWCString& operator+=(const char* cs);
RWCString& operator+=(const RWCString& str);
char& operator[](size_t i); char operator[](size_t i) const;
char& operator()(size_t i); char operator()(size_t i) const;
RWCSubString operator()(size_t start, size_t len); const RWCSubString operator()(size_t start, size_t len) const;
RWCSubString operator()(const RWCRExpr& re, size_t start=0); const RWCSubString operator()(const RWCRExpr& re, size_t start=0) const; RWCSubString operator()(const RWCRegexp& re, size_t start=0); const RWCSubString operator()(const RWCRegexp& re, size_t start=0) const;
RWCString& append(const char* cs);
RWCString& append(const char* cs, size_t N);
RWCString& append(char c, size_t N);
RWCString& append(const RWCString& cstr);
RWCString& append(const RWCString& cstr, size_t N);
size_t binaryStoreSize() const;
RWFile& operator<<(RWFile&, const RWCString&); size_t capacity() const;
size_t capacity(size_t capac);
int collate(const char* str) const; int collate(const RWCString& str) const;
int compareTo(const char* str, caseCompare = RWCString::exact) const; int compareTo(const RWCString& str, caseCompare = RWCString::exact) const;
RWBoolean contains(const char* str, caseCompare = RWCString::exact) const; RWBoolean contains(const RWCString& cs, caseCompare = RWCString::exact) const;
const char* data() const;
size_t first(char c) const;
size_t first(char c, size_t) const;
size_t first(const char* str) const;
size_t first(const char* str, size_t N) const;
unsigned hash(caseCompare = RWCString::exact) const;
size_t index(const char* pat,size_t i=0, caseCompare = RWCString::exact) const; size_t index(const RWCString& pat,size_t i=0, caseCompare = RWCString::exact) const;
size_t index(const char* pat, size_t patlen,size_t i, caseCompare cmp) const; size_t index(const RWCString& pat, size_t patlen,size_t i, caseCompare cmp) const;
size_t index(const RWCRExpr& re, size_t i=0) const; size_t index(const RWCRegexp& re, size_t i=0) const;
size_t index(const RWCRExpr& re,size_t* ext,size_t i=0) const; size_t index(const RWCRegexp& re,size_t* ext,size_t i=0) const;
RWCString& insert(size_t pos, const char* cs);
RWCString& insert(size_t pos, const char* cs, size_t N);
RWCString& insert(size_t pos, const RWCString& str);
RWCString& insert(size_t pos, const RWCString& str, size_t N);
RWBoolean isAscii() const;
RWBoolean isNull() const;
size_t last(char c) const;
size_t last(char c, size_t N) const;
size_t length() const;
RWCSubString match(const RWCRExpr& re, size_t start=0); const RWCSubString match(const RWCRExpr& re, size_t start=0) const;
size_t mbLength() const;
RWCString& prepend(const char* cs);
RWCString& prepend(const char* cs, size_t N);
RWCString& prepend(char c, size_t N);
RWCString& prepend(const RWCString& str);
RWCString& prepend(const RWCString& cstr, size_t N);
istream& readFile(istream& s);
istream& readLine(istream& s, RWBoolean skipWhite = TRUE);
istream& readString(istream& s);
istream& readToDelim(istream& s, char delim='\n');
istream& readToken(istream& s);
RWCString& remove(size_t pos);
RWCString& remove(size_t pos, size_t N);
RWCString& replace(size_t pos, size_t N, const char* cs);
RWCString& replace(size_t pos, size_t N1,const char* cs, size_t N2);
RWCString& replace(size_t pos, size_t N, const RWCString& str);
RWCString& replace(size_t pos, size_t N1,const RWCString& str, size_t N2);
replace(const RWCRExpr& pattern, const char* replacement, scopeType scope=one); replace(const RWCRExpr& pattern, const RWCString& replacement,scopeType scope=one);
RWCString s("hahahohoheehee"); s.replace(RWCRExpr("(ho)+","HAR"); // s == "hahaHARheehee"
void resize(size_t n);
RWCSubString strip(stripType s = RWCString::trailing, char c = ' '); const RWCSubString strip(stripType s = RWCString::trailing, char c = ' ') const;
stripType | 意味 |
---|---|
leading | 文字列の最初から文字を取り除く |
trailing | 文字列の最後から文字を取り除く |
both | 文字列の最初と最後の両方から文字を取り除く |
RWCSubString subString(const char* cs, size_t start=0, caseCompare = RWCString::exact); const RWCSubString subString(const char* cs, size_t start=0, caseCompare = RWCString::exact) const;
void toLower();
void toUpper();
static unsigned hash(const RWCString& str);
static size_t initialCapacity(size_t ic = 15);
static size_t maxWaste(size_t mw = 15);
static size_t resizeIncrement(size_t ri = 16);
RWBoolean operator==(const RWCString&, const char* ); RWBoolean operator==(const char*, const RWCString&); RWBoolean operator==(const RWCString&, const RWCString&); RWBoolean operator!=(const RWCString&, const char* ); RWBoolean operator!=(const char*, const RWCString&); RWBoolean operator!=(const RWCString&, const RWCString&);
RWBoolean operator< (const RWCString&, const char* ); RWBoolean operator< (const char*, const RWCString&); RWBoolean operator< (const RWCString&, const RWCString&); RWBoolean operator> (const RWCString&, const char* ); RWBoolean operator> (const char*, const RWCString&); RWBoolean operator> (const RWCString&, const RWCString&); RWBoolean operator<=(const RWCString&, const char* ); RWBoolean operator<=(const char*, const RWCString&); RWBoolean operator<=(const RWCString&, const RWCString&); RWBoolean operator>=(const RWCString&, const char* ); RWBoolean operator>=(const char*, const RWCString&); RWBoolean operator>=(const RWCString&, const RWCString&);
RWCString operator+(const RWCString&, const RWCString&); RWCString operator+(const char*, const RWCString&); RWCString operator+(const RWCString&, const char* );
ostream& operator<<(ostream& s, const RWCString&);
istream& operator>>(istream& s, RWCString& str);
RWvostream& operator<<(RWvostream&, const RWCString& str); RWFile& operator<<(RWFile&, const RWCString& str);
RWvistream& operator>>(RWvistream&, RWCString& str); RWFile& operator>>(RWFile&, RWCString& str);
RWCString strXForm(const RWCString&);
RWCString toLower(const RWCString& str);
RWCString toUpper(const RWCString& str);