string


マクロ定義

#define CSTL_STRING_INTERFACE(Name, Type)
 インターフェイスマクロ
#define CSTL_STRING_IMPLEMENT(Name, Type)
 実装マクロ
#define CSTL_NPOS   ((size_t)-1)
 NPOS

型定義

typedef struct String String
 stringの型

関数

StringString_new (void)
 生成
StringString_new_reserve (size_t n)
 許容量を予約して生成
StringString_new_assign (const CharT *cstr)
 C の文字列で初期化して生成
StringString_new_assign_len (const CharT *chars, size_t chars_len)
 文字の配列で初期化して生成
StringString_new_assign_c (size_t n, CharT c)
 文字で初期化して生成
void String_delete (String *self)
 破棄
size_t String_size (String *self)
 文字数を取得
size_t String_length (String *self)
 文字数を取得
int String_empty (String *self)
 空チェック
size_t String_capacity (String *self)
 許容量を取得
int String_reserve (String *self, size_t n)
 許容量を予約
void String_shrink (String *self, size_t n)
 許容量を縮小
int String_compare (String *self, String *x)
 比較
CharT * String_at (String *self, size_t idx)
 インデックスによる文字のアクセス
const CharT * String_c_str (String *self)
 C の文字列を取得
const CharT * String_data (String *self)
 文字の配列を取得
StringString_assign (String *self, const CharT *cstr)
 C の文字列を代入
StringString_assign_len (String *self, const CharT *chars, size_t chars_len)
 文字の配列を代入
StringString_assign_c (String *self, size_t n, CharT c)
 文字を代入
StringString_append (String *self, const CharT *cstr)
 C の文字列を追加
StringString_append_len (String *self, const CharT *chars, size_t chars_len)
 文字の配列を追加
StringString_append_c (String *self, size_t n, CharT c)
 文字を追加
StringString_push_back (String *self, CharT c)
 1文字を追加
StringString_insert (String *self, size_t idx, const CharT *cstr)
 C の文字列を挿入
StringString_insert_len (String *self, size_t idx, const CharT *chars, size_t chars_len)
 文字の配列を挿入
StringString_insert_c (String *self, size_t idx, size_t n, CharT c)
 文字を挿入
StringString_replace (String *self, size_t idx, size_t len, const CharT *cstr)
 C の文字列で置換
StringString_replace_len (String *self, size_t idx, size_t len, const CharT *chars, size_t chars_len)
 文字の配列で置換
StringString_replace_c (String *self, size_t idx, size_t len, size_t n, CharT c)
 文字で置換
StringString_erase (String *self, size_t idx, size_t len)
 文字を削除
void String_pop_back (String *self)
 最後の文字を削除
void String_clear (String *self)
 全文字を削除
int String_resize (String *self, size_t n, CharT c)
 文字数を変更
void String_swap (String *self, String *x)
 交換
size_t String_find (String *self, const CharT *cstr, size_t idx)
 C の文字列を検索
size_t String_find_len (String *self, const CharT *chars, size_t idx, size_t chars_len)
 文字の配列を検索
size_t String_find_c (String *self, CharT c, size_t idx)
 文字を検索
size_t String_rfind (String *self, const CharT *cstr, size_t idx)
 C の文字列を後ろから検索
size_t String_rfind_len (String *self, const CharT *chars, size_t idx, size_t chars_len)
 文字の配列を後ろから検索
size_t String_rfind_c (String *self, CharT c, size_t idx)
 文字を後ろから検索
size_t String_find_first_of (String *self, const CharT *cstr, size_t idx)
 C の文字列に含まれる最初の文字を検索
size_t String_find_first_of_len (String *self, const CharT *chars, size_t idx, size_t chars_len)
 文字の配列に含まれる最初の文字を検索
size_t String_find_first_of_c (String *self, CharT c, size_t idx)
 指定文字の最初の位置を検索
size_t String_find_last_of (String *self, const CharT *cstr, size_t idx)
 C の文字列に含まれる最後の文字を検索
size_t String_find_last_of_len (String *self, const CharT *chars, size_t idx, size_t chars_len)
 文字の配列に含まれる最後の文字を検索
size_t String_find_last_of_c (String *self, CharT c, size_t idx)
 指定文字の最後の位置を検索
size_t String_find_first_not_of (String *self, const CharT *cstr, size_t idx)
 C の文字列に含まれない最初の文字を検索
size_t String_find_first_not_of_len (String *self, const CharT *chars, size_t idx, size_t chars_len)
 文字の配列に含まれない最初の文字を検索
size_t String_find_first_not_of_c (String *self, CharT c, size_t idx)
 指定文字以外の文字の最初の位置を検索
size_t String_find_last_not_of (String *self, const CharT *cstr, size_t idx)
 C の文字列に含まれない最後の文字を検索
size_t String_find_last_not_of_len (String *self, const CharT *chars, size_t idx, size_t chars_len)
 文字の配列に含まれない最後の文字を検索
size_t String_find_last_not_of_c (String *self, CharT c, size_t idx)
 指定文字以外の文字の最後の位置を検索

説明

stringは代入・連結・挿入・置換・削除・検索などの有用な文字列処理機能を持つコンテナである。 末尾での文字の挿入・削除の計算量がO(1)であり、それ以外の位置の文字の挿入・削除の計算量はO(N)である。 インデックスによる文字のランダムアクセスが可能。 また、内部データの連続性は保証される。

stringを使うには、<cstl/string.h>をインクルードし、以下のマクロを用いてコードを展開する必要がある。

#include <cstl/string.h>

#define CSTL_STRING_INTERFACE(Name, Type)
#define CSTL_STRING_IMPLEMENT(Name, Type)

CSTL_STRING_INTERFACE() は任意の名前と文字の型のstringのインターフェイスを展開する。 CSTL_STRING_IMPLEMENT() はその実装を展開する。

また、CSTL_STRING_INTERFACE() を展開する前に、<cstl/algorithm.h>をインクルードすることにより、 アルゴリズムが使用可能となる。

使用例:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <cstl/string.h>

/* stringのインターフェイスと実装を展開 */
CSTL_STRING_INTERFACE(String, char)
CSTL_STRING_IMPLEMENT(String, char)

int main(void)
{
    size_t i;
    size_t pos;
    const char *p;
    /* stringを生成。
     * 型名・関数のプレフィックスはStringとなる。 */
    String *str = String_new();

    /* 代入 */
    String_assign(str, "string");
    /* 末尾に追加 */
    String_append(str, " example");
    /* 先頭に挿入 */
    String_insert(str, 0, "a ");

    /* Cの文字列として出力 */
    printf("%s\n", String_c_str(str));

    for (i = 0; i < String_length(str); i++) {
        /* インデックスによる文字の読み書き */
        printf("%c, ", *String_at(str, i));
        *String_at(str, i) = toupper(*String_at(str, i));
        printf("%c\n", *String_at(str, i));
    }

    /* 検索して置換 */
    p = "EX";
    pos = String_find(str, p, 0);
    if (pos != CSTL_NPOS) {
        String_replace(str, pos, strlen(p), "S");
    }
    printf("%s\n", String_c_str(str));

    /* 使い終わったら破棄 */
    String_delete(str);
    return 0;
}
注意:
以下に説明する型定義・関数は、 CSTL_STRING_INTERFACE(Name, Type)NameString , TypeCharT を仮に指定した場合のものである。 実際に使用する際には、使用例のように適切な引数を指定すること。
覚え書き:
コンパイラオプションによって、NDEBUGマクロが未定義かつCSTL_DEBUGマクロが定義されているならば、 assertマクロが有効になり、関数の事前条件に違反するとプログラムの実行を停止する。

マクロ定義

#define CSTL_STRING_INTERFACE ( Name,
Type   ) 

インターフェイスマクロ

任意の名前と文字の型のstringのインターフェイスを展開する。

引数:
Name 既存の型と重複しない任意の名前。stringの型名と関数のプレフィックスになる
Type 任意の文字の型
注意:
引数は CSTL_STRING_IMPLEMENT()の引数と同じものを指定すること。

Type を括弧で括らないこと。

#define CSTL_STRING_IMPLEMENT ( Name,
Type   ) 

実装マクロ

CSTL_STRING_INTERFACE()で展開したインターフェイスの実装を展開する。

引数:
Name 既存の型と重複しない任意の名前。stringの型名と関数のプレフィックスになる
Type 任意の文字の型
注意:
引数は CSTL_STRING_INTERFACE()の引数と同じものを指定すること。

Type を括弧で括らないこと。

#define CSTL_NPOS   ((size_t)-1)

NPOS

size_t型の最大値。 検索関数において、検索に失敗した時に返される。


型定義

typedef struct String String

stringの型

抽象データ型となっており、内部データメンバは非公開である。

以下、 String_new*() から返されたString構造体へのポインタをstringオブジェクトという。


関数

String* String_new ( void   ) 

生成

文字数が0のstringを生成する。

戻り値:
生成に成功した場合、stringオブジェクトを返す。

メモリ不足の場合、NULLを返す。

String* String_new_reserve ( size_t  n  ) 

許容量を予約して生成

許容量(内部メモリの再割り当てを行わずに格納できる文字数)がn 個、 文字数が0のstringを生成する。

引数:
n 許容量
戻り値:
生成に成功した場合、stringオブジェクトを返す。

メモリ不足の場合、NULLを返す。

String* String_new_assign ( const CharT *  cstr  ) 

C の文字列で初期化して生成

cstr で初期化されたstringを生成する。

引数:
cstr C の文字列
戻り値:
生成に成功した場合、stringオブジェクトを返す。

メモリ不足の場合、NULLを返す。

事前条件:
cstr がNULLでないこと。

String* String_new_assign_len ( const CharT *  chars,
size_t  chars_len 
)

文字の配列で初期化して生成

chars からchars_len 個の文字で初期化されたstringを生成する。

引数:
chars 文字の配列
chars_len chars の長さ
戻り値:
生成に成功した場合、stringオブジェクトを返す。

メモリ不足の場合、NULLを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_new_assign() と等価となる。

String* String_new_assign_c ( size_t  n,
CharT  c 
)

文字で初期化して生成

n 個のc で初期化されたstringを生成する。

引数:
n c の個数
c 文字
戻り値:
生成に成功した場合、stringオブジェクトを返す。

メモリ不足の場合、NULLを返す。

void String_delete ( String self  ) 

破棄

self を破棄する。 self がNULLの場合、何もしない。

引数:
self stringオブジェクト

size_t String_size ( String self  ) 

文字数を取得

引数:
self stringオブジェクト
戻り値:
self の文字数
覚え書き:
String_length() と等価である。

size_t String_length ( String self  ) 

文字数を取得

引数:
self stringオブジェクト
戻り値:
self の文字数
覚え書き:
String_size() と等価である。

int String_empty ( String self  ) 

空チェック

引数:
self stringオブジェクト
戻り値:
self の文字数が0の場合、非0を返す。

self の文字数が1以上の場合、0を返す。

size_t String_capacity ( String self  ) 

許容量を取得

引数:
self stringオブジェクト
戻り値:
self の許容量

int String_reserve ( String self,
size_t  n 
)

許容量を予約

self の許容量を文字n 個の領域に拡張する。 self が持つ文字は維持され、拡張した領域の初期化はしない。

引数:
self stringオブジェクト
n 許容量
戻り値:
拡張に成功した場合、非0を返す。

nself の現在の許容量以下の場合、self の変更を行わず非0を返す。

メモリ不足の場合、self の変更を行わず0を返す。

void String_shrink ( String self,
size_t  n 
)

許容量を縮小

self の許容量を文字n 個の領域に縮小する。 nself の現在の文字数以下の場合、self の許容量を文字数と同じにする。 nself の現在の許容量以上の場合、何もしない。

引数:
self stringオブジェクト
n 許容量

int String_compare ( String self,
String x 
)

比較

selfx の文字列を比較する。

引数:
self stringオブジェクト
x self と比較するstringオブジェクト
戻り値:
0 文字列が等しい場合
負の値 selfx より辞書順位で小さい場合
正の値 selfx より辞書順位で大きい場合

CharT* String_at ( String self,
size_t  idx 
)

インデックスによる文字のアクセス

引数:
self stringオブジェクト
idx インデックス
戻り値:
selfidx 番目の文字へのポインタ
事前条件:
idxself の文字数より小さい値であること。
覚え書き:
戻り値はself の変更により無効となる。

const CharT* String_c_str ( String self  ) 

C の文字列を取得

引数:
self stringオブジェクト
戻り値:
self の文字列を0で終端したC の文字列として返す。
覚え書き:
戻り値はself の変更により無効となる。

const CharT* String_data ( String self  ) 

文字の配列を取得

引数:
self stringオブジェクト
戻り値:
self の文字列を文字の配列として返す。
覚え書き:
戻り値の配列が0で終端することは保証されない。

戻り値はself の変更により無効となる。

String* String_assign ( String self,
const CharT *  cstr 
)

C の文字列を代入

selfcstr を代入する。 cstrself 内の文字列でもよい。

引数:
self stringオブジェクト
cstr C の文字列
戻り値:
代入に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
cstr がNULLでないこと。

String* String_assign_len ( String self,
const CharT *  chars,
size_t  chars_len 
)

文字の配列を代入

selfchars からchars_len 個の文字を代入する。 charsself 内の文字の配列でもよい。

引数:
self stringオブジェクト
chars 文字の配列
chars_len chars の長さ
戻り値:
代入に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_assign() と等価となる。

String* String_assign_c ( String self,
size_t  n,
CharT  c 
)

文字を代入

selfn 個のc を代入する。

引数:
self stringオブジェクト
n c の個数
c 文字
戻り値:
代入に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

String* String_append ( String self,
const CharT *  cstr 
)

C の文字列を追加

self の末尾に、cstr を追加する。 cstrself 内の文字列でもよい。

引数:
self stringオブジェクト
cstr C の文字列
戻り値:
追加に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
cstr がNULLでないこと。

String* String_append_len ( String self,
const CharT *  chars,
size_t  chars_len 
)

文字の配列を追加

self の末尾に、chars からchars_len 個の文字を追加する。 charsself 内の文字の配列でもよい。

引数:
self stringオブジェクト
chars 文字の配列
chars_len chars の長さ
戻り値:
追加に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_append() と等価となる。

String* String_append_c ( String self,
size_t  n,
CharT  c 
)

文字を追加

self の末尾に、n 個のc を追加する。

引数:
self stringオブジェクト
n c の個数
c 文字
戻り値:
追加に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

String* String_push_back ( String self,
CharT  c 
)

1文字を追加

self の末尾に、c を追加する。

引数:
self stringオブジェクト
c 文字
戻り値:
追加に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

String* String_insert ( String self,
size_t  idx,
const CharT *  cstr 
)

C の文字列を挿入

selfidx 番目の位置に、cstr を挿入する。 cstrself 内の文字列でもよい。

引数:
self stringオブジェクト
idx 挿入する位置
cstr C の文字列
戻り値:
挿入に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
idxself の文字数以下の値であること。

cstr がNULLでないこと。

String* String_insert_len ( String self,
size_t  idx,
const CharT *  chars,
size_t  chars_len 
)

文字の配列を挿入

selfidx 番目の位置に、chars からchars_len 個の文字を挿入する。 charsself 内の文字の配列でもよい。

引数:
self stringオブジェクト
idx 挿入する位置
chars 文字の配列
chars_len chars の長さ
戻り値:
挿入に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
idxself の文字数以下の値であること。

chars がNULLでないこと。

覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_insert() と等価となる。

String* String_insert_c ( String self,
size_t  idx,
size_t  n,
CharT  c 
)

文字を挿入

selfidx 番目の位置に、n 個のc を挿入する。

引数:
self stringオブジェクト
idx 挿入する位置
n c の個数
c 文字
戻り値:
挿入に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
idxself の文字数以下の値であること。

String* String_replace ( String self,
size_t  idx,
size_t  len,
const CharT *  cstr 
)

C の文字列で置換

selfidx 番目から最大len 個の文字を、cstr で置換する。 cstrself 内の文字列でもよい。

引数:
self stringオブジェクト
idx 置換開始インデックス
len idx からの長さ
cstr C の文字列
戻り値:
置換に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
idxself の文字数以下の値であること。

cstr がNULLでないこと。

覚え書き:
idx + lenself の文字数より大きい場合、selfidx 番目から末尾までが置換される。

String* String_replace_len ( String self,
size_t  idx,
size_t  len,
const CharT *  chars,
size_t  chars_len 
)

文字の配列で置換

selfidx 番目から最大len 個の文字を、chars からchars_len 個の文字で置換する。 charsself 内の文字の配列でもよい。

引数:
self stringオブジェクト
idx 置換開始インデックス
len idx からの長さ
chars 文字の配列
chars_len chars の長さ
戻り値:
置換に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
idxself の文字数以下の値であること。

chars がNULLでないこと。

覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_replace() と等価となる。

idx + lenself の文字数より大きい場合、selfidx 番目から末尾までが置換される。

String* String_replace_c ( String self,
size_t  idx,
size_t  len,
size_t  n,
CharT  c 
)

文字で置換

selfidx 番目から最大len 個の文字を、n 個のc で置換する。

引数:
self stringオブジェクト
idx 置換開始インデックス
len idx からの長さ
n c の個数
c 文字
戻り値:
置換に成功した場合、self を返す。

メモリ不足の場合、self の変更を行わずNULLを返す。

事前条件:
idxself の文字数以下の値であること。
覚え書き:
idx + lenself の文字数より大きい場合、selfidx 番目から末尾までが置換される。

String* String_erase ( String self,
size_t  idx,
size_t  len 
)

文字を削除

selfidx 番目の文字から最大len 個の文字を削除する。

引数:
self stringオブジェクト
idx 削除開始インデックス
len idx からの長さ
戻り値:
self
事前条件:
idxself の文字数以下の値であること。
覚え書き:
idx + lenself の文字数より大きい場合、selfidx 番目から末尾までが削除される。

void String_pop_back ( String self  ) 

最後の文字を削除

self の最後の文字を削除する。

引数:
self stringオブジェクト
事前条件:
self が空でないこと。

void String_clear ( String self  ) 

全文字を削除

self のすべての文字を削除する。

引数:
self stringオブジェクト

int String_resize ( String self,
size_t  n,
CharT  c 
)

文字数を変更

self の文字数をn 個に変更する。 nself の現在の文字数以下の場合、文字数がn 個になるまで末尾から文字が削除される。 nself の現在の文字数より大きい場合、文字数がn 個になるまでc が末尾から挿入される。

引数:
self stringオブジェクト
n 文字数
c 文字
戻り値:
文字数の変更に成功した場合、非0を返す。

メモリ不足の場合、self の変更を行わず0を返す。

void String_swap ( String self,
String x 
)

交換

selfx の内容を交換する。

引数:
self stringオブジェクト
x self と内容を交換するstringオブジェクト

size_t String_find ( String self,
const CharT *  cstr,
size_t  idx 
)

C の文字列を検索

selfidx 番目から末尾までの範囲で、cstr が現れる最初の位置を検索する。

引数:
self stringオブジェクト
cstr C の文字列
idx 検索開始インデックス
戻り値:
検索に成功した場合、見つかった部分文字列の先頭の文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
cstr がNULLでないこと。

size_t String_find_len ( String self,
const CharT *  chars,
size_t  idx,
size_t  chars_len 
)

文字の配列を検索

selfidx 番目から末尾までの範囲で、chars からchars_len 個の文字が現れる最初の位置を検索する。

引数:
self stringオブジェクト
chars 文字の配列
idx 検索開始インデックス
chars_len chars の長さ
戻り値:
検索に成功した場合、見つかった部分文字列の先頭の文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_find() と等価となる。

size_t String_find_c ( String self,
CharT  c,
size_t  idx 
)

文字を検索

selfidx 番目から末尾までの範囲で、c が現れる最初の位置を検索する。

引数:
self stringオブジェクト
c 文字
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

size_t String_rfind ( String self,
const CharT *  cstr,
size_t  idx 
)

C の文字列を後ろから検索

self の先頭からidx - 1番目までの範囲で、cstr が現れる最後の位置を検索する。

引数:
self stringオブジェクト
cstr C の文字列
idx 検索開始インデックス
戻り値:
検索に成功した場合、見つかった部分文字列の先頭の文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
cstr がNULLでないこと。

size_t String_rfind_len ( String self,
const CharT *  chars,
size_t  idx,
size_t  chars_len 
)

文字の配列を後ろから検索

self の先頭からidx - 1番目までの範囲で、chars からchars_len 個の文字が現れる最後の位置を検索する。

引数:
self stringオブジェクト
chars 文字の配列
idx 検索開始インデックス
chars_len chars の長さ
戻り値:
検索に成功した場合、見つかった部分文字列の先頭の文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_rfind() と等価となる。

size_t String_rfind_c ( String self,
CharT  c,
size_t  idx 
)

文字を後ろから検索

self の先頭からidx - 1番目までの範囲で、c が現れる最後の位置を検索する。

引数:
self stringオブジェクト
c 文字
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

size_t String_find_first_of ( String self,
const CharT *  cstr,
size_t  idx 
)

C の文字列に含まれる最初の文字を検索

selfidx 番目から末尾までの範囲で、cstr に含まれる最初の文字が現れる位置を検索する。

引数:
self stringオブジェクト
cstr C の文字列
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
cstr がNULLでないこと。

size_t String_find_first_of_len ( String self,
const CharT *  chars,
size_t  idx,
size_t  chars_len 
)

文字の配列に含まれる最初の文字を検索

selfidx 番目から末尾までの範囲で、chars からchars_len 個の文字に含まれる最初の文字が現れる位置を検索する。

引数:
self stringオブジェクト
chars 文字の配列
idx 検索開始インデックス
chars_len chars の長さ
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_find_first_of() と等価となる。

size_t String_find_first_of_c ( String self,
CharT  c,
size_t  idx 
)

指定文字の最初の位置を検索

selfidx 番目から末尾までの範囲で、c が現れる最初の位置を検索する。

引数:
self stringオブジェクト
c 文字
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

size_t String_find_last_of ( String self,
const CharT *  cstr,
size_t  idx 
)

C の文字列に含まれる最後の文字を検索

self の先頭からidx - 1番目までの範囲で、cstr に含まれる最後の文字が現れる位置を検索する。

引数:
self stringオブジェクト
cstr C の文字列
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
cstr がNULLでないこと。

size_t String_find_last_of_len ( String self,
const CharT *  chars,
size_t  idx,
size_t  chars_len 
)

文字の配列に含まれる最後の文字を検索

self の先頭からidx - 1番目までの範囲で、chars からchars_len 個の文字に含まれる最後の文字が現れる位置を検索する。

引数:
self stringオブジェクト
chars 文字の配列
idx 検索開始インデックス
chars_len chars の長さ
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_find_last_of() と等価となる。

size_t String_find_last_of_c ( String self,
CharT  c,
size_t  idx 
)

指定文字の最後の位置を検索

self の先頭からidx - 1番目までの範囲で、c が現れる最後の位置を検索する。

引数:
self stringオブジェクト
c 文字
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

size_t String_find_first_not_of ( String self,
const CharT *  cstr,
size_t  idx 
)

C の文字列に含まれない最初の文字を検索

selfidx 番目から末尾までの範囲で、cstr に含まれない最初の文字が現れる位置を検索する。

引数:
self stringオブジェクト
cstr C の文字列
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
cstr がNULLでないこと。

size_t String_find_first_not_of_len ( String self,
const CharT *  chars,
size_t  idx,
size_t  chars_len 
)

文字の配列に含まれない最初の文字を検索

selfidx 番目から末尾までの範囲で、chars からchars_len 個の文字に含まれない最初の文字が現れる位置を検索する。

引数:
self stringオブジェクト
chars 文字の配列
idx 検索開始インデックス
chars_len chars の長さ
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_find_first_not_of() と等価となる。

size_t String_find_first_not_of_c ( String self,
CharT  c,
size_t  idx 
)

指定文字以外の文字の最初の位置を検索

selfidx 番目から末尾までの範囲で、c 以外の文字が現れる最初の位置を検索する。

引数:
self stringオブジェクト
c 文字
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

size_t String_find_last_not_of ( String self,
const CharT *  cstr,
size_t  idx 
)

C の文字列に含まれない最後の文字を検索

self の先頭からidx - 1番目までの範囲で、cstr に含まれない最後の文字が現れる位置を検索する。

引数:
self stringオブジェクト
cstr C の文字列
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
cstr がNULLでないこと。

size_t String_find_last_not_of_len ( String self,
const CharT *  chars,
size_t  idx,
size_t  chars_len 
)

文字の配列に含まれない最後の文字を検索

self の先頭からidx - 1番目までの範囲で、chars からchars_len 個の文字に含まれない最後の文字が現れる位置を検索する。

引数:
self stringオブジェクト
chars 文字の配列
idx 検索開始インデックス
chars_len chars の長さ
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。

事前条件:
chars がNULLでないこと。
覚え書き:
chars が 0 で終端していて、かつchars_len が CSTL_NPOS と等しい場合、 String_find_last_not_of() と等価となる。

size_t String_find_last_not_of_c ( String self,
CharT  c,
size_t  idx 
)

指定文字以外の文字の最後の位置を検索

self の先頭からidx - 1番目までの範囲で、c 以外の文字が現れる最後の位置を検索する。

引数:
self stringオブジェクト
c 文字
idx 検索開始インデックス
戻り値:
検索に成功した場合、その文字のインデックスを返す。

検索に失敗した場合、CSTL_NPOSを返す。


SourceForge.JP