バナーをクリックすれば目次に戻ります
Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.
RWWString
#include <rw/wstring.h> RWWString a;
このクラスは、標準 C 言語の型 wchar_t のワイド文字を処理します。この型の文字は普通 2 バイトか 4 バイトから成り、従来の "char" 型よりも豊富なコードセットを作成できます (Solaris では wchar_t は 4 バイトです)。wchar_t 型の文字はすべて同じサイズなので、インデックス付けは高速です。
複数バイト文字と ASCII 形式との変換は、RWWString() コンストラクタ、および RWWString メンバー関数の isAscii()、toAscii()、toMultiByte() によって行います。
ストリーム操作は、複数バイトストリーム表現との変換処理を含んでいます。つまり、出力時はワイド文字の文字列を複数バイト文字列に変換し、入力時は複数バイト文字列をワイド文字の文字列に変換します。ワイド文字の文字列の外部表現は通常、複数バイト文字の文字列であるため、記憶領域は節約され、複数バイト文字列を想定している装置とのインタフェースは簡単になります。
このクラスでは、埋め込まれたヌルも有効です。
const wchar_t* 型のパラメータに NULL ポインタを渡してはなりません。ライブラリのデバッグバージョンで検出されます。
このクラスは、書き込み時にコピーを行うという技法を使用して実装します。この技法では、コピーコンストラクタと代入演算子は古いオブジェクトを参照するので、処理は非常に高速です。実際のコピーは、"書き込み" が行われたとき、つまりオブジェクトが変わったときにだけ作成されます。その結果、性能は向上し、コピーの意味はわかりやすくなっています。
RWWSubString というクラスは、部分文字列の抽出と変更をサポートします。
#include <rw/rstream.h> #include <rw/wstring.h> main(){ RWWString a(L"There is no joy in Beantown"); a.subString(L"Beantown") = L"Redmond"; cout << a << endl; return 0; } |
There is no joy in Redmond. |
enum RWWString::caseCompare { exact, ignoreCase };
enum RWWString::multiByte_ { multiByte };
enum RWWString::ascii_ {ascii };
RWWString();
RWWString(const wchar_t* cs);
RWWString(const wchar_t* cs, size_t N);
RWWString(RWSize_T ic);
RWWString(const RWWString& str);
RWWString(const RWWSubString& ss);
RWWString(char c);
RWWString(char c, size_t N);
RWWString(const char* mbcs, multiByte_ mb);
RWWString a("\306\374\315\313\306\374", multiByte);
RWWString(const char* acs, ascii_ asc);
RWWString a("An ASCII character string", ascii); RWWString(const char* cs, size_t N, multiByte_ mb); RWWString(const char* cs, size_t N, ascii__ asc);
RWWString(const char* cs, size_t N, multiByte_ mb); RWWString(const char* cs, size_t N, ascii_ asc);
operator const wchar_t*() const;
RWWString& operator=(const char* cs);
RWWString& operator=(const RWWString& str);
RWWString& operator=(const RWWSubString& sub);
RWWString& operator+=(const wchar_t* cs);
RWWString& operator+=(const RWWString& str);
wchar_t& operator[](size_t i); wchar_t operator[](size_t i) const;
wchar_t& operator()(size_t i); wchar_t operator()(size_t i) const;
RWWSubString operator()(size_t start, size_t len); const RWWSubString operator()(size_t start, size_t len) const;
RWWString& append(const wchar_t* cs);
RWWString& append(const wchar_t* cs, size_t N,);
RWWString& append(const RWWString& cstr);
RWWString& append(const RWWString& cstr, size_t N);
size_t binaryStoreSize() const;
RWFile& operator<<(RWFile&, const RWWString&); size_t capacity() const;
size_t capacity(size_t capac);
int collate(const RWWString& str) const; int collate(const wchar_t* str) const;
int compareTo(const RWWString& str, caseCompare = RWWString::exact) const; int compareTo(const wchar_t* str, caseCompare = RWWString::exact) const;
RWBoolean contains(const RWWString& cs, caseCompare = RWWString::exact) const; RWBoolean contains(const wchar_t* str, caseCompare = RWWString::exact) const;
const wchar_t* data() const;
size_t first(wchar_t c) const;
size_t first(wchar_t c, size_t) const;
size_t first(const wchar_t* str) const;
size_t first(const wchar_t* str, size_t N) const;
unsigned hash(caseCompare = RWWString::exact) const;
size_t index(const wchar_t* pat,size_t i=0, caseCompare = RWWString::exact) const; size_t index(const RWWString& pat,size_t i=0, caseCompare = RWWString::exact) const;
size_t index(const wchar_t* pat, size_t patlen,size_t i, caseCompare) const; size_t index(const RWWString& pat, size_t patlen,size_t i, caseCompare) const;
RWWString& insert(size_t pos, const wchar_t* cs);
RWWString& insert(size_t pos, const wchar_t* cs, size_t N);
RWWString& insert(size_t pos, const RWWString& str);
RWWString& insert(size_t pos, const RWWString& str, size_t N);
RWBoolean isAscii() const;
RWBoolean isNull() const;
size_t last(wchar_t c) const;
size_t length() const;
RWWString& prepend(const wchar_t* cs);
RWWString& prepend(const wchar_t* cs, size_t N,);
RWWString& prepend(const RWWString& str);
RWWString& prepend(const RWWString& cstr, size_t N);
istream& readFile(istream& s);
istream& readLine(istream& s, RWBoolean skipWhite = TRUE);
istream& readString(istream& s);
istream& readToDelim(istream&, wchar_t delim=(wchar_t)'\n');
istream& readToken(istream& s);
RWWString& remove(size_t pos);
RWWString& remove(size_t pos, size_t N);
RWWString& replace(size_t pos, size_t N, const wchar_t* cs);
RWWString& replace(size_t pos, size_t N1,const wchar_t* cs, size_t N2);
RWWString& replace(size_t pos, size_t N, const RWWString& str);
RWWString& replace(size_t pos, size_t N1, const RWWString& str, size_t N2);
void resize(size_t n);
RWWSubString strip(stripType s = RWWString::trailing, wchar_t c = L' '); const RWWSubString strip(stripType s = RWWString::trailing, wchar_t c = L' ') const;
stripType | 意味 |
---|---|
leading | 文字列の最初から文字を取り除く |
trailing | 文字列の最後から文字を取り除く |
both | 文字列の最初と最後から文字を取り除く |
RWWSubString subString(const wchar_t* cs, size_t start=0, caseCompare = RWWString::exact); const RWWSubString subString(const wchar_t* cs, size_t start=0, caseCompare = RWWString::exact) const;
RWCString toAscii() const;
RWCString toMultiByte() const;
void toLower();
void toUpper();
static unsigned hash(const RWWString& wstr);
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 RWWString&, const wchar_t* ); RWBoolean operator==(const wchar_t*, const RWWString&); RWBoolean operator==(const RWWString&, const RWWString&); RWBoolean operator!=(const RWWString&, const wchar_t* ); RWBoolean operator!=(const wchar_t*, const RWWString&); RWBoolean operator!=(const RWWString&, const RWWString&);
RWBoolean operator< (const RWWString&, const wchar_t* ); RWBoolean operator< (const wchar_t*, const RWWString&); RWBoolean operator< (const RWWString&, const RWWString&); RWBoolean operator> (const RWWString&, const wchar_t* ); RWBoolean operator> (const wchar_t*, const RWWString&); RWBoolean operator> (const RWWString&, const RWWString&); RWBoolean operator<=(const RWWString&, const wchar_t* ); RWBoolean operator<=(const wchar_t*, const RWWString&); RWBoolean operator<=(const RWWString&, const RWWString&); RWBoolean operator>=(const RWWString&, const wchar_t* ); RWBoolean operator>=(const wchar_t*, const RWWString&); RWBoolean operator>=(const RWWString&, const RWWString&);
RWWString operator+(const RWWString&, const RWWString&); RWWString operator+(const wchar_t*, const RWWString&); RWWString operator+(const RWWString&, const wchar_t* );
ostream& operator<<(ostream& s, const RWWString& str);
istream& operator>>(istream& s, RWWString& str);
RWvostream& operator<<(RWvostream&, const RWWString& str); RWFile& operator<<(RWFile&, const RWWString& str);
RWvistream& operator>>(RWvistream&, RWWString& str); RWFile& operator>>(RWFile&, RWWString& str);
RWWString strXForm(const RWWString&);
RWWString toLower(const RWWString& str);
RWWString toUpper(const RWWString& str);