Tools.h++ 7.0 クラスライブラリ・リファレンスマニュアル: RWWSubString

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

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==()` の結果の否定を返します。