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

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


RWCString

形式

#include <rw/cstring.h>
RWCString a;

説明

このクラスは、非常に強力で便利な文字列操作機能を持っているクラスで、よく知られた標準 C の <string.h> 関数とまったく同様に効率良く働きます。

このクラスは、主に単一バイト文字セット (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 }

比較、検索およびハッシュの各関数において、大文字、小文字を区別する (exact) か区別しない (ignoreCase) かのどちらを使用するかを指定します。

enum RWCString::scopeType { one, all }

正規表現に対する replace が、正規表現によって検索される最初の 1 個の(one) 部分文字列を置換するか、またはすべての (all) 部分文字列を置換するかを指定するのに使用します。

公開コンストラクタ

RWCString();

長さがゼロの文字列 (空文字列) を作成します。

RWCString(const char* cs);

ヌル文字で終了する文字列 cs から変換します。作成された文字列に、cs が指した場所から最初にヌル文字を検出した場所までのデータをコピーします。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString(const char* cs, size_t N);

文字列 cs から文字列を作成します。作成された文字列に、cs が指すデータをちょうど N 文字 (文字列中のヌル文字を含む) コピーします。したがって、cs が指すバッファには少なくとも N バイト長が必要です。

RWCString(RWSize_T ic);

長さがゼロの文字列 (空文字列) を作成します。その文字列に、パラメータ ic が与えるサイズ (つまり、サイズを変更せずに拡大できる最大長さ)を与えます。数値定数から RWSize_T 値を作成し、このコンストラクタに渡すことをお薦めします。RWSize_Tsize_t をそれ自身に変換する方法を知っていますが、標準的なコンパイラは char に変換する方を選択します。

RWCString(const RWCString& str);

コピーコンストラクタ。作成された文字列に、str のデータをコピーします。

RWCString(const RWCSubString& ss);

部分文字列から変換します。作成された文字列に、ss の部分文字列をコピーします。

RWCString(char c);

単一文字 c を含む文字列を作成します。

RWCString(char c, size_t N);

文字 cN 個並べた文字列を作成します。

型変換

operator
const char*() const;
ヌル文字で終了する文字列である、RWCString のデータにアクセスします。このデータは RWCString のもので、削除や変更はできません。RWCString オブジェクト自身が変化したり有効範囲から外に出たりすると、以前に返されたポインタ値は無効になることがあります。文字列がヌル文字で終わっているので、その長さはメンバー関数 length() から与えられます。したがって、埋め込まれたヌルが含まれていることもあります。

代入演算子

RWCString&
operator=(const char* cs);
cs が指す、ヌル文字で終わる文字列を自分自身にコピーします。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString&
operator=(const RWCString& str);
str のデータを文字列にコピーし、自分自身への参照を返します。

RWCString&
operator+=(const char* cs);
cs が指す、ヌル文字で終わる文字列を自分自身に追加し、自分自身への参照を返します。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString&
operator+=(const RWCString& str);
文字列 str を自分自身に追加し、自分自身への参照を返します。

インデックス付け演算子

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

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

RWCSubString
operator()(size_t start, size_t len);
const RWCSubString
operator()(size_t start, size_t len) const;
部分文字列演算子。自分自身の部分文字列で、インデックス start で始まる長さ lenRWCSubString を返します。最初の可変要素を左辺値として使用できます。startlen を加えた長さが文字列長以下でなければなりません。ライブラリが RWDEBUG フラグを使用して作成されていて、かつ startlen を加えた長さが範囲外であると RWBoundsErr 型の例外が発生します。

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;
インデックス start 以降で正規表現 re と一致する最初の部分文字列を返します。一致する部分文字列がなければ、NULL 部分文字列が返されます。最初に記述したほうの可変要素を左辺値として使用できます。operator()(const RWCRExpr&...) を使用したい場合、替わりに match(const RWCRExpr&...) を使用しなければなりません。この理由は、現在 RWCRegexp を確保していますが、RWCString::operator("string") の場合 operator(const RWCRExpr&...)operator(const RWCRegexp) は曖昧だからです。さらに、RWCString::operator(0) の場合、operator(const char*)operator(size_t) は曖昧です。この関数はヌル文字を含む文字列に対して使えない場合があります。この関数は cs MBCS 文字列に対して使えません。

公開メンバー関数

RWCString&
append(const char* cs);

cs が指す、ヌル文字で終わる文字列を自分自身に追加し、自分自身への参照を返します。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString&
append(const char* cs, size_t N);

文字列 csN バイト (埋め込まれたヌルを含む) を自分自身に追加します。したがって、cs が指すバッファには少なくとも N バイト長が必要です。自分自身への参照を返します。

RWCString&
append(char c, size_t N);

文字 cN 個のコピーを自分自身に追加し、自分自身への参照を返します。

RWCString&
append(const RWCString& cstr);

文字列 cstr を自分自身に追加し、自分自身への参照を返します。

RWCString&
append(const RWCString& cstr, size_t N);

文字列 cstr の最初の N バイトまたは cstr の長さのうちどちらか小さい方を自分自身に追加し、自分自身への参照を返します。

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;

自分自身と引数 str に対して標準 C ライブラリ関数 ::strcoll() を呼び出した結果に応じて、ゼロ未満、ゼロより大きい、またはゼロの整数を返します。ロケール依存の照合をサポートします。::strcoll() を提供するプラットフォーム上でのみ提供されます。この関数はヌル文字を含む文字列に対して使えません。

int
compareTo(const char* str, caseCompare = RWCString::exact) const;
int
compareTo(const RWCString& str,
          caseCompare = RWCString::exact) const;

自分自身と引数 str に対して標準 C ライブラリ関数 memcmp() を呼び出した結果に応じて、ゼロ未満、ゼロより大きい、またはゼロの整数を返します。大文字と小文字を区別するかどうかは caseCompare 引数によって決まります。RWCString::exactRWCString::ignoreCase のいずれかになります。caseCompareRWCString::exact である場合、この関数はすべての文字列種類に対し機能します。それ以外の場合、この関数は MBCS 文字列に対して使えません。この関数はヌル文字を含む const char* 文字列に対して使えません。この関数は const char* MBCS 文字列に対して使えない場合があります。

RWBoolean
contains(const char* str, caseCompare = RWCString::exact)
         const;
RWBoolean
contains(const RWCString& cs,
         caseCompare = RWCString::exact) const;

パターンマッチング。str が自分自身内に存在すれば TRUE を返します。大文字と小文字を区別するかどうかは caseCompare 引数によって決まります。RWCString::exactRWCString::ignoreCase のいずれかになります。caseCompareRWCString::exact である場合、この関数はすべての文字列種類に対し機能します。それ以外の場合、この関数は MBCS 文字列に対して使えません。この関数はヌル文字を含む const char* 文字列に対して使えません。この関数は const char* MBCS 文字列に対して使えない場合があります。

const char*
data() const;

ヌル文字で終了する文字列として、RWCString のデータにアクセスします。このデータは RWCString のもので、削除や変更はできません。RWCString オブジェクト自身が変化したり有効範囲から外に出たりすると、以前に返されたポインタ値は無効になります。文字列がヌル文字で終わっているので、その長さはメンバー関数 length() から与えられます。したがって、文字列中のヌル文字が含まれていることもあります。

size_t
first(char c) const;

自分自身内で最初に文字 c が現れる場所のインデックスを返します。c がないか、または、c の前にヌル文字が埋め込まれていれば RW_NPOS を返します。この関数はヌル文字を含む文字列に対して使えません。この関数は MBCS 文字列に対して使えません。

size_t
first(char c, size_t) const;

自分自身内で文字 c が最初に現れる場所のインデックスを返します。埋め込まれたヌルが検出されても検索を続けます。この文字がなければ RW_NPOS を返します。この関数は MBCS 文字列と互換性がありません。

size_t
first(const char* str) const;

自分自身内で str に含まれる任意の文字が最初に現れる場所のインデックスを返します。検出されなかったり、検出されるヌル文字が検出されたりすると RW_NPOS を返します。この関数はヌル文字を含む文字列に対して使えません。この関数は MBCS 文字列に対して使えない場合があります。

size_t
first(const char* str, size_t N) const;

自分自身内で str に含まれる任意の文字が最初に現れる場所のインデックスを返します。埋め込まれたヌルを含め、str にある N バイトがチェックされます。したがって、str が指すバッファには少なくとも N バイトの長さが必要です。一致するものがなければ RW_NPOS を返します。

unsigned
hash(caseCompare = RWCString::exact) const;

適切なハッシュ値を返します。caseCompareRWCString::ignoreCase である場合、この関数は MBCS 文字列に対して使えません。

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;

パターンマッチング。インデックス i から自分自身内の pat を検索し、最初に発見した場所のインデックスを返します。一致するパターンがなければ RW_NPOS を返します。大文字と小文字を区別するかどうかは caseCompare 引数によって決まります。デフォルトでは RWCString::exact になります。caseCompareRWCString::exact である場合、この関数はすべての文字列種類に対し機能します。それ以外の場合、この関数は MBCS 文字列に対して使えません。

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;

パターンマッチング。インデックス i から自分自身内の patlen バイトの長さのパターン pat を検索し、最初に発見した場所のインデックスを返します。一致するパターンがなければ RW_NPOS を返します。大文字と小文字を区別するかどうかは caseCompare 引数によって決まります。caseCompareRWCString::exact である場合、この関数はすべての文字列種類に対し機能します。それ以外の場合、この関数は MBCS 文字列に対して使えません。

size_t
index(const RWCRExpr& re, size_t i=0) const;
size_t
index(const RWCRegexp& re, size_t i=0) const;

正規表現マッチング。正規表現 re と一致する最初のパターンのインデックス i 以上のインデックスを返します。一致するパターンがなければ RW_NPOS を返します。この関数は MBCS 文字列に対して使えません。

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;

正規表現マッチング。正規表現 re と一致する最初のパターンのインデックス i 以上のインデックスを返します。一致するパターンがなければ RW_NPOS を返します。一致したパターンの長さは ext が指す変数に返されます。この関数はヌル文字を含む文字列に対して使えません。この関数は MBCS 文字列に対して使えない場合があります。

RWCString&
insert(size_t pos, const char* cs);

ヌル文字で終わる文字列 cs を自分自身のバイト位置 pos に挿入して文字列を拡張します。自分自身への参照を返します。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString&
insert(size_t pos, const char* cs, size_t N);

cs 文字列の最初の N バイト (埋め込まれたヌルを含む) を自分自身のバイト位置 pos に挿入します。したがって、cs が指すバッファには少なくとも N バイト長が必要です。自分自身への参照を返します。

RWCString&
insert(size_t pos, const RWCString& str);

str 文字列を自分自身の pos 位置に挿入し、自分自身への参照を返します。

RWCString&
insert(size_t pos, const RWCString& str, size_t N);

文字列 str の最初の N バイト、または str が指す長さのうちどちらか小さい方を自分自身の pos 位置に挿入し、自分自身への参照を返します。

RWBoolean
isAscii() const;

自分自身の中に MSB が 1 の文字がなければ TRUE を返します。

RWBoolean
isNull() const;

自分自身が長さゼロの文字列 (空文字列) である場合に TRUE を返します。

size_t
last(char c) const;

文字列の中で、文字 c が最後に現れる場所のインデックスを返します。一致するものがないか、または、自分自身の中の c の右側に埋め込まれたヌル文字があれば、RW_NPOS を返します。この関数はヌル文字を含む文字列に対して使えません。この関数は MBCS 文字列に対して使えない場合があります。

size_t
last(char c, size_t N) const;

文字列の中で、文字 c が最後に現れる場所のインデックスを返します。埋め込まれた ヌルを検出しても検索が続きます。このような文字がなければ、RW_NPOS を返します。この関数は MBCS 文字列に対して使えません。

size_t
length() const;

自分自身内のバイト数を返します。自分自身内に複数バイト文字があれば、この値は文字数とは一致しません。

RWCSubString
match(const RWCRExpr& re, size_t start=0);
const RWCSubString
match(const RWCRExpr& re, size_t start=0) const;

インデックス start 以降で正規表現 re と一致する最初の部分文字列を返します。一致する部分文字列がなければ、空部分文字列が返されます。最初に記述した方の可変要素を左辺値として使用できます。拡張正規表現を使用したい場合、これは operator()(const RWCRegexp&...) の替わりに使用されることに注意してください。

size_t
mbLength() const;

標準 C の関数 ::mblen() の結果に応じて、自分自身内の複数バイト文字の数を返します。不正な文字があれば、RW_NPOS を返します。通常は、mbLength()length() です。::mblen() を提供するプラットフォーム上でのみ提供されます。

RWCString&
prepend(const char* cs);

cs が指す、ヌル文字で終わる文字列を自分自身の前方に挿入し、自分自身への参照を返します。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString&
prepend(const char* cs, size_t N);

文字列 csN バイト (文字列中のヌル文字を含む) だけ自分自身の前方に挿入します。したがって、cs が示すバッファには少なくとも N バイト長が必要です。自分自身への参照を返します。

RWCString&
prepend(char c, size_t N);

文字 cN 個のコピーを自分自身の前方に挿入し、自分自身への参照を返します。

RWCString&
prepend(const RWCString& str);

文字列 str を自分自身の前方に挿入し、自分自身への参照を返します。

RWCString&
prepend(const RWCString& cstr, size_t N);

文字列 cstr の最初の N バイト、または cstr が示す長さのうちどちらか小さい方を自分自身の前方に挿入し、自分自身への参照を返します。

istream&
readFile(istream& s);

EOF に達するまで入力ストリーム s から文字を読み込み、自分自身の以前の内容を書き換えます。ヌル文字は他の文字と同様に扱います。

istream&
readLine(istream& s, RWBoolean skipWhite = TRUE);

復帰改行か EOF に達するまで入力ストリーム s から文字を読み込み、自分自身の以前の内容を書き換えます。復帰改行は入力ストリームから取り除かれますが、格納されません。ヌル文字は他の文字と同様に扱います。skipWhite 引数が TRUE ならば、iostream ライブラリマニピュレータ ws を使用して空白を読み飛ばしてから文字を保存します。

istream&
readString(istream& s);

EOF かヌル終端文字に達するまで入力ストリーム s から文字を読み込み、自分自身の以前の内容を置き換えます。ストリームに残っているバイト数が多い場合、このメソッドを使用する前に RWCString の大きさを、読み込むおおよそのバイト数に変更するようにしてください。詳細は、『Tools.h++ 7.0 ユーザーズガイド』の「Implementation Details」を参照してください。この関数はヌル文字を含む文字列に対して使えません。この関数は MBCS 文字列に対して使えない場合があります。

istream&
readToDelim(istream& s, char delim='\n');
EOF か区切り文字 delim に達するまで、入力ストリーム s から文字を読み込み、自分自身の以前の内容を書き換えます。区切り文字は入力ストリームから取り除かれますが、格納されません。ヌル文字は、他の文字と同様に扱います。delim'\0' の場合、この関数はヌル文字を含む文字列に対して使えません。delim'\0' の場合、この関数は MBCS 文字列に対して使えない場合があります。

istream&
readToken(istream& s);

空白を読み飛ばしてから文字を読み込みます。後続の空白か EOF に達するまで入力ストリーム s から文字を読み込み、自分自身の以前の内容を書き換えます。入力ストリーム内の空白はそのまま残されます。ヌル文字は、他の文字と同様に扱います。空白は、標準 C ライブラリ関数 isspace() を使用して認識します。この関数は MBCS 文字列に対して使えません。

RWCString&
remove(size_t pos);

pos length() の大きさ以下でなければならないバイト位置から文字列の終端までの文字を削除し、自分自身への参照を返します。

RWCString&
remove(size_t pos, size_t N);

pos (length() の大きさ以下でなければならない) バイト位置から N バイト、または文字列の終端までのうちどちらか短い方を削除し、自分自身への参照を返します。

RWCString&
replace(size_t pos, size_t N, const char* cs);

pos (length() の大きさ以下でなければならない) バイト位置から N バイト、または文字列の終端までのうちどちらか短い方をヌルで終わる文字列 cs で置き換え、自分自身への参照を返します。この関数はヌル文字を含む cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

RWCString&
replace(size_t pos, size_t N1,const char* cs, size_t N2);

pos (length() の大きさ以下でなければならない) バイト位置から N1 バイト、または文字列の終端までのうちどちらか短い方を文字列 cs で置き換えます。埋め込まれたヌルを含めてちょうど N2 バイトをコピーします。したがって、cs が指すバッファには少なくとも N2 バイト長が必要です。自分自身への参照を返します。

RWCString&
replace(size_t pos, size_t N, const RWCString& str);

pos (length() の大きさ以下でなければならない) バイト位置から N バイト、または文字列の終端までのうちどちらか短い方を文字列 str で置き換え、自分自身への参照を返します。

RWCString&
replace(size_t pos, size_t N1,const RWCString& str, size_t N2);

pos (length() の大きさ以下でなければならない) バイト位置から N1 バイトと、または文字列の終端までのうちどちらか短い方を、最初の N2 バイトか str が示す長さのうちどちらか小さい方で置き換え、自分自身への参照を返します。

replace(const RWCRExpr& pattern, const char* replacement,
        scopeType scope=one);
replace(const RWCRExpr& pattern,
        const RWCString& replacement,scopeType scope=one);

pattern と一致する部分文字列を置換文字列と置換します。pattern は新しい拡張正規表現です。scope{one, all} のどちらかで、パターンのすべての一致を replacement と置換するか、または、最初に一致したものだけを置換するかを指定します。replacement は文字列の置換パターンです。次に例を示します。

    RWCString s("hahahohoheehee");
    s.replace(RWCRExpr("(ho)+","HAR"); // s == "hahaHARheehee"

この関数はヌル文字を含む const char* replacement 文字列に対して使えません。この関数は const char* replacement MBCS 文字列に対して使えない場合があります。

void
resize(size_t n);

自分自身の長さを n に変更します。必要に応じて、空白を補うか切り捨てます。

RWCSubString
strip(stripType s = RWCString::trailing, char c = ' ');
const RWCSubString
strip(stripType s = RWCString::trailing, char c = ' ')
const;

自分自身内の部分文字列で、その最初、最後またはその両方から文字 c を取り除いた部分文字列を返します。最初に記述した可変要素を左辺値として使用できます。列挙型 stripType は次のような値を取ります。

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;

cs が指す、ヌル文字で終わる文字列に一致する最初の部分文字列を返します。最初に記述した可変要素は左辺値として使用できます。大文字と小文字を区別するかどうかは、caseCompare 引数によって決まります。デフォルトでは RWCString::exact です。caseCompareRWCString::ignoreCase である場合、この関数は MBCS 文字列に対して使えません。この関数は NULL が埋め込まれた cs 文字列に対して使えません。この関数は cs MBCS 文字列に対して使えない場合があります。

void
toLower();

<ctype.h> で宣言されている標準 C ライブラリ機能を使用して、自分自身内の大文字をすべて小文字に変換します。この関数は MBCS 文字列に対して使えません。

void
toUpper();

<ctype.h> で宣言されている標準 C ライブラリ機能を使用して、自分自身内の小文字をすべて大文字に変換します。この関数は MBCS 文字列に対して使えません。

静的公開メンバー関数

static unsigned
hash(const RWCString& str);

str.hash(RWCString::exact) により返される str のハッシュ値を返します。

static size_t
initialCapacity(size_t ic = 15);

RWCString の最小初期容量を設定し、以前の値を返します。初期設定値は 15 バイトです。値が大きいと、メモリーを多く必要としますが、文字列を連結したり読み取るときにサイズ変更を行う必要が少なくなります。逆に値が小さいと、メモリーは少なくてすみますが、サイズ変更を頻繁に行うことになります。

static size_t
maxWaste(size_t mw = 15);

文字列内の未使用領域の最大容量を設定し、以前の値を返します。初期設定値は 15 バイトです。mw 文字以上消費された場合、超過した領域は返還させられます。

static size_t
resizeIncrement(size_t ri = 16);

文字列を拡張するためにさらにメモリーが必要になったとき、サイズ変更増分値を設定し、以前の値を返します。初期設定値は 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&);

論理等値演算子と論理非等値演算子。大文字と小文字は区別します (exact)。この関数はヌル文字を含む const char* 文字列に対して使えません。この関数は const char* MBCS 文字列に対して使えない場合があります。

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&);

比較は、辞書式順序でバイトごとに行われます。大文字と小文字は区別します (exact)。ロケールの区別はメンバー collate()strxfrm() を使用します。この関数はヌル文字を含む const char* 文字列に対して使えません。この関数は const char* MBCS 文字列に対して使えない場合があります。

RWCString
operator+(const RWCString&, const RWCString&);
RWCString
operator+(const char*,      const RWCString&);
RWCString
operator+(const RWCString&, const char*     );

連結演算子。この関数はヌル文字を含む const char* 文字列に対して使えません。この関数は const char* MBCS 文字列に対して使えない場合があります。

ostream&
operator<<(ostream& s, const RWCString&);

ostream sRWCString を出力します。

istream&
operator>>(istream& s, RWCString& str);

str.readToken(s) を呼び出し、入力ストリーム s からトークンを読み取ります。この関数は MBCS 文字列に対して使えません。

RWvostream&
operator<<(RWvostream&, const RWCString& str);
RWFile&
operator<<(RWFile&,     const RWCString& str);

仮想ストリームまたは RWFile に文字列 str を保存します。

RWvistream&
operator>>(RWvistream&, RWCString& str);
RWFile&
operator>>(RWFile&,     RWCString& str);

それぞれ仮想ストリームまたは RWFile から str に文字列を復元し、str の以前の内容を書き換えます。

関連の大域関数

RWCString
strXForm(const RWCString&);

引数文字列に ::strxfrm() を適用した結果を返します。RWCString::collate() よりも高速に照合できます。::strxfrm() を提供するプラットフォーム上でのみ提供されます。この関数はヌル文字を含む文字列に対して使えません。

RWCString
toLower(const RWCString& str);

str の大文字をすべて小文字に置き換えたものを返します。標準 C ライブラリ関数 tolower() を使用します。この関数は MBCS 文字列に対して使えません。

RWCString
toUpper(const RWCString& str);

str の小文字をすべて大文字に置き換えたものを返します。標準 C ライブラリ関数 toupper() を使用します。この関数は MBCS 文字列に対して使えません。