バナーをクリックすれば目次に戻ります

Copyright 1999 Rogue Wave Software
Copyright 1999 Sun Microsystems, Inc.


RWWSubString

形式

#include <rw/wstring.h>
RWWString s(L"test string");
s(6,3);   // "tri"

説明

このクラスは、開始位置と長さを定義することによって、RWWString の一部分を表します。たとえば、7 〜 11 番目の要素 (両端含む) は、開始位置が 7 で長さが 5 です。この開始位置と長さの定義は、RWWString::strip() などの関数や正規表現を引数とする多重定義関数の呼び出し演算子を使用して行うこともできます。このクラスには公開コンストラクタがありません。このクラスは RWWString クラスの各種関数によって作成され、ただちに破壊されます。

長さがゼロの部分文字列は、開始位置が定義されて長さがゼロと定義された部分文字列です。これは、指定した文字の直前で始まり、その文字を含んでいない部分文字列と考えられ、左辺値として使用できます。NULL 部分文字列も有効で、要求された部分文字列が (おそらく検索で) 存在しないということを示すためによく使用されます。NULL 部分文字列はメンバー関数 isNull() で検出できますが、左辺値としては使用できません。

持続性

なし

#include <rw/rstream.h>
#include <rw/wstring.h>

main(){
 RWWString s(L"What I tell you is true.");
 // 部分文字列を作成し、左辺値として使用する
 s(15,0) = RWWString(L" three times");
 cout << s << endl;
 return 0;
}

プログラム出力:

What I tell you three times is true.

代入演算子

void
operator=(const RWWString&);

RWWString に対する代入。

    RWWString a;
    RWWString b;
    ...
    b(2, 3) = a;

上記の文は、データ a を部分列 b (2,3) にコピーします。要素数は同じでなくても構いません。違っている場合は、b が適切にサイズ変更します。自分自身が NULL 部分文字列であれば、これらの文は何も行いません。

void
operator=(const wchar_t*);

ワイド文字の文字列からの代入。たとえば、次のように使用します。

    RWWString wstr(L"Mary had a little lamb");
    wchar_t dat[] = L"Perrier";
    wstr(11,4) = dat;      // "Mary had a Perrier"
選択した文字の数は一致しなくても構いません。一致しなければ、wstr が適切にサイズ変更します。自分自身が NULL 部分文字列であれば、この文は何も行いません。

インデックス付け演算子

wchar_t
operator[](size_t i);
wchar_t&
operator[](size_t i) const;

部分文字列の i 番目の文字を返します。最初に記述した可変要素は左辺値として使用できますが、2 番目に記述したものは使用できません。インデックス i は 0 〜 (部分文字列長 -1) の範囲になければなりません。境界検査を行い、インデックスが範囲外にあると RWBoundsErr 型の例外が発生します。

wchar_t
operator()(size_t i);
wchar_t&
operator()(size_t i) const;

部分文字列の i 番目の文字を返します。最初に記述した可変要素を左辺値として使用できますが、2 番目に記述したものは使用できません。インデックス i は 0 〜 (部分文字列長 -1) の範囲になければなりません。<rw/wstring.h> を取り込む前に前処理マクロ RWBOUNDS_CHECK を定義すると、境界検査を行うことができます。このときインデックスが範囲外にあると RWBoundsErr 型の例外が発生します。

公開メンバー関数

RWBoolean
isNull() const;

NULL 部分文字列の場合、TRUE を返します。

size_t
length() const;

RWWSubString の長さを返します。

RWBoolean
operator!() const;

NULL 部分文字列の場合、TRUE を返します。

size_t
start() const;

RWWSubString の開始要素を返します。

void
toLower();

自分自身内の大文字をすべて小文字に変換します。標準 C ライブラリ関数 towlower() を使用します。

void
toUpper();

自分自身内の小文字をすべて大文字に変換します。標準 C ライブラリ関数 towupper() を使用します。

大域論理演算子

RWBoolean
operator==(const RWWSubString&, const RWWSubString&);
RWBoolean
operator==(const RWWString&,    const RWWSubString&);
RWBoolean
operator==(const RWWSubString&, const RWWString&   );
RWBoolean
operator==(const wchar_t*,      const RWWSubString&);
RWBoolean
operator==(const RWWSubString&, const wchar_t*     );

部分文字列が文字列もしくは RWWString 引数と辞書式順序で等しければ TRUE を返します。大文字と小文字は区別します (exact)。

RWBoolean
operator!=(const RWWString&,    const RWWString&   );
RWBoolean
operator!=(const RWWString&,    const RWWSubString&);
RWBoolean
operator!=(const RWWSubString&, const RWWString&   );
RWBoolean
operator!=(const wchar_t*,      const RWWString&   );
RWBoolean
operator!=(const RWWString&,    const wchar_t*     );

それぞれ operator==() の結果の否定を返します。