文字列関数

StringAdd

この関数は文字列の終わりに別の文字列を追加します。

bool  StringAdd(
string&  string_var,       // 文字列を追加する文字列
string  add_substring      // 追加される文字列
);

パラメータ

string_var

[in][out]  文字列を追加する文字列

add_substring

[in]  元の文字列に追加される文字列

戻り値

成功の場合は true、それ以外の場合は false。エラーコードを受け取るには GetLastError() 関数が呼ばれるべきです。

例:

void OnStart()
{
  long length=1000000;
string a=“a”,b=“b”,c;
//— 1 番目の方法
uint start=GetTickCount(),stop;
long i;
for(i=0;i<length;i++)
{
c=a+b;
}
stop=GetTickCount();
Print(“time for ‘c = a + b’ = “,(stop-start),” milliseconds, i = “,i);

//— 2 番目の方法
start=GetTickCount();
for(i=0;i<length;i++)
{
StringAdd(a,b);
}
stop=GetTickCount();
Print(“time for ‘StringAdd(a,b)’ = “,(stop-start),” milliseconds, i = “,i);

//— 3 番目の方法
start=GetTickCount();
a=“a”; // 変数 a を再初期化する
for(i=0;i<length;i++)
{
StringConcatenate(c,a,b);
}
stop=GetTickCount();
Print(“time for ‘StringConcatenate(c,a,b)’ = “,(stop-start),” milliseconds, i = “,i);
}

参照

StringConcatenate, StringSplit, StringSubstr

StringBufferLen

この関数は文字列に割り当てられたバッファのサイズを返します。

int  StringBufferLen(
string  string_var      // 文字列

パラメータ

string_var

[in]  文字列

戻り値

0 は、文字列が定数でバッファサイズが変更出来ないことを意味します。-1 は、文字列がクライアント端末に属し、バッファ内容の修正が不確定な結果を有することが出来ることを意味します。

例:

void OnStart()
{
long length=1000;
string a=“a”,b=“b”;
//—
long i;
Print(“before: StringBufferLen(a) = “,StringBufferLen(a),
”  StringLen(a) = “,StringLen(a));
for(i=0;i<length;i++)
{
StringAdd(a,b);
}
Print(“after: StringBufferLen(a) = “,StringBufferLen(a),
”  StringLen(a) = “,StringLen(a));
}

参照

StringAdd、StringInit、StringLen、StringFill

StringCompare

この関数は 2 つの文字列を比較し、比較結果を整数値で返します。

int  StringCompare(
const string&  string1,                 // 比較される1 番目の文字列
const string&  string2,                 // 比較される2 番目の文字列
bool          case_sensitive=true      // 比較時の大文字と小文字の区別モードの選択
);

パラメータ

string1

[in]  1 番目の文字列

string2

[in]  2 番目の文字列

case_sensitive=true

[in]  大文字と小文字の区別モードの選択。true の場合 “A” > “a” 。false の場合 “A” = “a” 。初期値は true です。

戻り値

  • string1 < string2 の場合は -1
  • string1 = string2 の場合は 0
  • string1 > string2 の場合は 1

注意事項

文字列はシンボル毎に比較され、シンボルは、現在のコードページに基づいてアルファベット順に比較されます。

例:

void OnStart()
{
//— apple と home を比較する
string s1=”Apple“;
string s2=”home“;

//— 大文字と小文字を区別して比較する
int result1=StringCompare(s1,s2);
if(result1>0) PrintFormat(“Case sensitive comparison: %s > %s“,s1,s2);
else
{
if(result1<0)PrintFormat(“Case sensitive comparison: %s < %s“,s1,s2);
else PrintFormat(“Case sensitive comparison: %s = %s“,s1,s2);
}

//— 大文字と小文字を区別しないで比較する
int result2=StringCompare(s1,s2,false);
if(result2>0) PrintFormat(“Case insensitive comparison: %s > %s“,s1,s2);
else
{
if(result2<0)PrintFormat(“Case insensitive comparison: %s < %s“,s1,s2);
else PrintFormat(“Case insensitive comparison: %s = %s“,s1,s2);
}
/* 結果:
    Case-sensitive comparison: Apple < home
    Case insensitive comparison: Apple < home
*/
}

参照

String 型、CharToString()、ShortToString()、StringToCharArray()、StringToShortArray()、StringGetCharacter()、コードページの利用

StringConcatenate

この関数は渡されたパラメータの文字列を形成しそのサイズを返します。パラメータは任意の型です。パラメータの数は 2 以上で 64を超えることは出来ません。

int  StringConcatenate(
string&  string_var// 形成する文字列
void argument1       // 任意の基本データ型を持つ1 番目のパラメータ
  void argument2        // 任意の基本データ型を持つ2 番目のパラメータe
                     // 任意の基本データ型を持つ次のパラメータ
);

パラメータ

string_var

[out]  連結の結果として形成される文字列

argumentN

[in]  コンマで区切られた任意の値。(任意の基本データ型で 2 から 63 )

戻り値

連結の結果として形成された文字列の長さパラメータは Print() 及び Comment() と同じ規則に従って文字列に変換されます。

参照

StringAdd, StringSplit, StringSubstr

StringFill

指定された文字列に選択されたシンボルを書き入れます。

bool  StringFill(
string&  string_var,      // 書き込みされる文字列
ushort    character        // 書き込みに使用されるシンボル
);

パラメータ

string_var

[in][out] 選択されたシンボルを書き入れられる文字列

character

[in]  文字列の書き込みに使用されるシンボル

戻り値

成功の場合は true、それ以外の場合は false。エラーコード を取得するには、GetLastError()が呼ばれます。

注意事項

「in place」での文字列の記入は、新しい文字列の作成またはコピーの移行操作なしで、シンボルが文字列に直接挿入されていることを意味します。これは操作時間を節約します。

例:

void OnStart()
{
string str;
StringInit(str,20,’_’);
Print(“str = “,str);
StringFill(str,0);
Print(“str = “,str,“: StringBufferLen(str) = “, StringBufferLen(str));
}
// 結果
//   str = ____________________
//   str =  : StringBufferLen(str) = 20
//

参照

StringBufferLen、StringLen、StringInit

StringFind

文字列内で部分文字列を検索します。

int  StringFind(
string  string_value,        // 検索が行われる文字列
string  match_substring,    // 検索される文字列
int    start_pos=0          // 検索開始位置
);

パラメータ

string_value

[in]  検索が行われる文字列

match_substring

[in]  検索される部分文字列

start_pos=0

[in]  検索が開始される文字列内の位置

戻り値

検索された部分文字列が始まる文字列の位置。部分文字列が見つからない場合は -1 。

参照

StringSubstr, StringGetCharacter, StringLen, StringLen

StringGetCharacter

文字列の指定された位置にあるシンボルの値を返します。

ushort  StringGetCharacter(
string  string_value,    // 文字列
int    pos              // 文字列内でのシンボルの位置
);

パラメータ

string_value

[in]  文字列

pos

[in]  文字列内でのシンボルの位置( 0〜StringLen(text) -1 )

戻り値

シンボルコード。エラーの場合は 0 。エラーコード を取得するには、GetLastError()が呼ばれます。

参照

StringSetCharacter, StringBufferLen, StringLen, StringFill, StringInit, StringToCharArray, StringToShortArray

StringInit

指定された記号で文字列を初期化し、指定された文字列の長さを提供します。

bool  StringInit(
string&  string_var,      // 初期化される文字列
int      new_len=0,        // 初期化後の必要な文字列の長さ
ushort    character=0      // 初期化に使用されるシンボル
);

パラメータ

string_var

[in][out]  初期化及び初期化解除される文字列

new_len=0

[in]  初期化後の文字列の長さlength=0 の場合、文字列は初期化解除されます。つまり、文字列バッファはクリアされバッファアドレスがゼロに設定されます。

character=0

[in]  文字列に書き込むシンボル

戻り値

成功の場合は true、それ以外の場合は false。エラーコード を取得するには、GetLastError()が呼ばれます。

注意事項

character=0 及び 新しい長さを示すnew_len > 0 の場合、指定された長さの文字列のバッファが配布され、ゼロで満たされます。バッファ全体に文字列ターミネータが記入されているため、文字列の長さはゼロに等しくなります。

例:

void OnStart()
{
//—
string str;
StringInit(str,200,0);
Print(“str = “,str,“: StringBufferLen(str) = “,
StringBufferLen(str),”  StringLen(str) = “,StringLen(str));
}
/*  結果
str = : StringBufferLen(str) = 200   StringLen(str) = 0
*/

参照

StringBufferLen、StringLen

StringLen

文字列のシンボルの数を返します。

int  StringLen(
string  string_value      // 文字列
);

パラメータ

string_value

[in]  長さを計算する文字列

戻り値

文字列での最後のゼロを除いたシンボル数

参照

StringBufferLen, StringTrimLeft, StringTrimRight, StringToCharArray, StringToShortArray

StringSetLength

文字列に指定された長さ(文字数)を設定します。

bool  StringSetLength(
string&    string_var,      // 文字列
uint       new_length       // 新しい文字列の長さ
);

パラメータ

string_var

[in][out]  新しい文字数を設定する文字列

new_capacity

[in]  文字数での必要な文字列の長さ。new_lengthが現在のサイズより小さい場合、余分な文字は破棄されます。

戻り値

実行成功の場合はtrue、それ以外の場合はfalseエラーコードを受け取るには、GetLastError()関数が呼び出されるべきです。

注意事項

StringSetLength()関数は、文字列に割り当てられたバッファのサイズを変更しません。

参照

StringLen、StringBufferLen、StringReserve、 StringInit、StringSetCharacter

StringReplace

文字列で見つかった全ての部分文字列を指定されたシンボルの配列で置換します。

int  StringReplace(
string&        str,              // 部分文字列が書き込まれる文字列
const string   find,            // 検索された部分文字列
const string    replacement      // 見つかった位置に挿入される部分文字列
);

パラメータ

str

[in][out]  中で部分文字列が置き換えられる文字列

find

[in]  置き換えられる部分文字列

replacement

[in]  見つかった部分文字列の代わりに挿入される文字列

戻り値

成功の場合は置き換えの回数、それ以外の場合は -1。エラーコードの取得には GetLastError() 関数を使用します。

注意事項

関数が正常に実行されたが、(置き換えられる部分文字列が見つからなかったため)置換が行われていない場合は、0 が返されます。

不正な str または find パラメータ(空または初期化されていない文字列。 StringInit() をご参照ください)によってエラーが発生することがあります。また、置き換えに充分なメモリがない場合にもエラーが発生します。

例:

string text=“The quick brown fox jumped over the lazy dog.”;
int replaced=StringReplace(text,“quick”,“slow”);
replaced+=StringReplace(text,“brown”,“black”);
replaced+=StringReplace(text,“fox”,“bear”);
Print(“Replaced: “, replaced,“. Result=”,text);

//  結果
//  Replaced: 3. Result=The slow black bear jumped over the lazy dog.
//

参照

StringSetCharacter()、StringSubstr()

StringReserve

指定されたサイズのバッファをメモリ内の文字列用に予約します。

bool  StringReserve(
string&    string_var,      // 文字列
uint       new_capacity     // 文字列を格納するバッファのサイズ
);

パラメータ

string_var

[in][out] バッファサイズが合わせてサイズを変更する文字列

new_capacity

[in] 文字列に必要なバッファサイズ。new_capacityのサイズが文字列の長さより小さい場合、現在のバッファのサイズは変わりません。

戻り値

実行成功の場合はtrue、それ以外の場合はfalseエラーコードを受け取るには、GetLastError()関数が呼び出されるべきです。

注意事項

一般的に、文字列サイズは文字列を格納するためのバッファのサイズと等しくありません。文字列を作成するとき、適切なバッファは通常マージンを持って割り当てられます。StringReserve()関数を使用すると、バッファサイズを管理し、将来の操作に最適なサイズを指定できます。

StringInit()と異なり、StringReserve()関数は文字列の内容を変更せず、文字で埋めません。

例:

void OnStart()
{
string s;
//— StringReserveを使わずに動作速度を確認する
ulong t0=GetMicrosecondCount();
for(int i=0; i< 1024; i++)
s+=” “+(string)i;
ulong msc_no_reserve=GetMicrosecondCount()-t0;
s=NULL;
//— StringReserveを使用して同じことをする
StringReserve(s,1024 * 3);
t0=GetMicrosecondCount();
for(int i=0; i< 1024; i++)
s+=” “+(string)i;
ulong msc_reserve=GetMicrosecondCount()-t0;
//— 時刻を確認する
Print(“Test with StringReserve passed for “+(string)msc_reserve+” msc”);
Print(“Test without StringReserve passed for “+(string)msc_no_reserve+” msc”);
/* 結果:
Test with StringReserve passed for 50 msc
Test without StringReserve passed for 121 msc
*/
}

参照

StringBufferLen、StringSetLength、StringInit、 StringSetCharacter

StringSetCharacter

指定された位置での文字が変更された文字列のコピーを返します。

bool  StringSetCharacter(
string&   string_var,      // 文字列
int      pos,              // 位置
ushort    character        // 文字
);

パラメータ

string_var

[in][out]  文字列

pos

[in]  文字列内での文字の位置0 から StringLen(text)

character

[in]  Unicode シンボルコード

戻り値

成功の場合は true、それ以外の場合は false。エラーコードを受け取るには GetLastError() 関数が呼ばれるべきです。

注意事項

pos が文字列の長さより少なくシンボルコードの値が 0 の場合、文字列は短く切られます(が文字列に割り当てられた バッファサイズは変わりません。)。文字列の長さは pos に等しくなります。

pos が文字列の長さと等しい場合、指定されたシンボルが文字列の終わりに追加され、長さが 1 つ長くなります。

例:

void OnStart()
{
string str=“0123456789”;
Print(“before: str = “,str,“,StringBufferLen(str) = “,
StringBufferLen(str),”  StringLen(str) = “,StringLen(str));
//— 真ん中にゼロ値を追加する
StringSetCharacter(str,6,0);
Print(“after: str = “,str,“,StringBufferLen(str) = “,
StringBufferLen(str),”  StringLen(str) = “,StringLen(str));
//— 終わりにシンボルを追加する
int size=StringLen(str);
StringSetCharacter(str,size,’+’);
Print(“addition: str = “,str,“,StringBufferLen(str) = “,
StringBufferLen(str),”  StringLen(str) = “,StringLen(str));
}
/* 結果
before: str = 0123456789 ,StringBufferLen(str) = 0   StringLen(str) = 10
after: str = 012345 ,StringBufferLen(str) = 16   StringLen(str) = 6
addition: str = 012345+ ,StringBufferLen(str) = 16   StringLen(str) = 7
*/

参照

StringBufferLen, StringLen, StringFill, StringInit, CharToString, ShortToString, CharArrayToString, ShortArrayToString

StringSplit

指定された文字列から指定されたセパレータで部分文字列を取得し、取得された部分文字列の数を返します。.

int  StringSplit(
const string   string_value,      // 検索の行われる文字列
const ushort  separator,          // 区切り文字
string        & result[]          // 見つかった部分文字列を受け取るための参照で渡された配列
);

パラメータ

string_value

[in]  部分文字列が取得される文字列。文字列は変更されません。

pos

[in]  区切り文字のコード。コードの取得には StringGetCharacter() 関数が使用されます。

result[]

[out]  取得された部分文字列が含まれている文字列配列

戻り値

result[] 配列での部分文字列の数セパレータが渡された文字列内に見つからない場合、元の文字列のみが配列内に配置されます。

string_value が空または NULL の場合は 0エラーの場合は -1エラーコードの取得には GetLastError() 関数が呼ばれます。

例:

string to_split=“_life_is_good_”; // 部分文字列に分ける文字列
string sep=“_”;               // 区切り文字
ushort u_sep;                 // 区切り文字のコード
string result[];               // 文字列を受け取る配列
//— 区切り文字のコードを取得する
u_sep=StringGetCharacter(sep,0);
//— 文字列を部分文字列に分ける
int k=StringSplit(to_split,u_sep,result);
//— コメントを表示する
PrintFormat(“Strings obtained: %d. Used separator ‘%s’ with the code %d”,k,sep,u_sep);
//— 取得された文字列を全て出力する
if(k>0)
{
for(int i=0;i<k;i++)
{
PrintFormat(“result[%d]=\”%s\””,i,result[i]);
}
}

参照

StringReplace()、StringSubstr()、StringConcatenate()

StringSubstr

指定された位置から開始してテキスト文字列から部分文字列を抽出します。

string  StringSubstr(
string  string_value,    // 文字列
int    start_pos,        // 開始位置
int    length=-1        // 抽出された文字列の長さ
);

パラメータ

string_value

[in]  部分文字列を抽出する文字列

start_pos

[in]  部分文字列の初期の位置( 0〜StringLen(text) -1 )

length=-1

[in] 抽出された文字列の長さ。このパラメータ値が設定されていないか -1 に等しい場合、部分文字列は示された位置から文字列の最後までから抽出されます。

戻り値

可能な場合は抽出された部分文字列のコピー、その他の場合は空の文字列

参照

StringSplit, StringFind, StringGetCharacter

StringToLower

選択された文字列の全てのシンボルを小文字に変換します。

bool  StringToLower(
string&  string_var      // 処理される文字列
);

パラメータ

string_var

[in][out]  文字列

戻り値

成功の場合は true、それ以外の場合は false。エラーコード を取得するには、GetLastError()が呼ばれます。

参照

StringToUpper, StringTrimLeft, StringTrimRight

StringToUpper

選択された文字列の全てのシンボルを大文字に変換します。

bool  StringToUpper(
string&  string_var      // 処理される文字列
);

パラメータ

string_var

[in][out]  文字列

戻り値

成功の場合は true、それ以外の場合は false。エラーコード を取得するには、GetLastError()が呼ばれます。

参照

StringToLower, StringTrimLeft, StringTrimRight

StringTrimLeft

この関数は、文字列の最初の意味のあるシンボルの左部分にある改行文字、スペースやタブを切り取ります。文字列は直接(コピーなどされずに)変更されます。

int  StringTrimLeft(
string&  string_var      // 切られる文字列
);

パラメータ

string_var

[in][out]  左から切られる文字列

戻り値

切り取られたシンボルの数

参照

StringTrimRight, StringToLower, StringToUpper

StringTrimRight

この関数は、文字列の最後の意味あるシンボルの右部分にある改行文字、スペースやタブを切り取ります。文字列は直接(コピーなどされずに)変更されます。

int  StringTrimRight(
string&  string_var      // 切られる文字列
);

パラメータ

string_var

[in][out]  右から切られる文字列

戻り値

切り取られたシンボルの数

参照

StringTrimLeft, StringToLower, StringToUpper

Originally posted 2019-07-29 23:16:07.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">