[[← 51 章に戻る|Palm OS Programmer's API Reference/51]] [[↑トップへ|Palm OS Programmer's API Reference]] [[53 章に進む →|Palm OS Programmer's API Reference/53]] ---- {{anchor top}} この章の索引 *{{goto 文字列関数,文字列関数}} **{{goto StrAToI,StrAToI}} **{{goto StrCaselessCompare,StrCaselessCompare}} **{{goto StrCat,StrCat}} **{{goto StrChr,StrChr}} **{{goto StrCompare,StrCompare}} **{{goto StrCompareAscii,StrCompareAscii}} **{{goto StrCopy,StrCopy}} **{{goto StrDelocalizeNumber,StrDelocalizeNumber}} **{{goto StrIToA,StrIToA}} **{{goto StrIToH,StrIToH}} **{{goto StrLen,StrLen}} **{{goto StrLocalizeNumber,StrLocalizeNumber}} **{{goto StrNCaselessCompare,StrNCaselessCompare}} **{{goto StrNCat,StrNCat}} **{{goto StrNCompare,StrNCompare}} **{{goto StrNCompareAscii,StrNCompareAscii}} **{{goto StrNCopy,StrNCopy}} **{{goto StrPrintF,StrPrintF}} **{{goto StrStr,StrStr}} **{{goto StrToLower,StrToLower}} **{{goto StrVPrintF,StrVPrintF}} ---- !!!52 文字列マネージャ この章では、文字列マネージャのための参照資源を提供します。文字列マネージャ API はヘッダ ファイル {{span style='color:blue;font-family:monospace;',StringMgr.h}} で定義されています。 追加情報は、''Palm OS Programmer's Companion, vol. I'' の[[「テキスト」|Palm OS Programmer's Companion Volume I/8]]を参照してください。 !!{{anchor 文字列マネージャ関数}}文字列マネージャ関数 {{goto top,^TOP^}} !{{anchor StrAToI}}StrAToI 関数 {{goto top,^TOP^}} '''目的''' 文字列を整数に変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int32 StrAToI ( const Char *str ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ str}} **変換する文字列へのポインタ '''返り値''' 整数を返します。 '''コメント''' この関数を標準 {{span style='color:blue;font-family:monospace;',atoi}} ルーチンの代わりに使用します。 !{{anchor StrCaselessCompare}}StrCaselessCompare 関数 {{goto top,^TOP^}} '''目的''' 2 つの文字列を、大文字か小文字区別せず、アクセント(訳者注: 仏語や独語などのアクセント付きの文字のことだと思われる)を気にせずに、比較します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrCaselessCompare ( const Char *s1, const Char *s2 ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s1}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ s2}} **文字列へのポインタ '''返り値''' *0: 文字列が一致する場合。 *正値: {{span style='color:blue;font-family:monospace;',s1}} > {{span style='color:blue;font-family:monospace;',s2}} *負値: {{span style='color:blue;font-family:monospace;',s1}} < {{span style='color:blue;font-family:monospace;',s2}} '''コメント''' この関数を標準 {{span style='color:blue;font-family:monospace;',stricmp}} ルーチンの代わりに使用します。 マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに {{goto TxtCaselessCompare,TxtCaselessCompare()|Palm OS Programmer's API Reference/55}} (または、大文字小文字を区別する比較では {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}})を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、{{span style='color:blue;font-family:monospace;',TxtCaselessCompare}} はさらに一致するテキストの長さを返すことができます。 '''参照''' {{goto StrNCaselessCompare,StrNCaselessCompare()}}, {{goto TxtCaselessCompare,TxtCaselessCompare()|Palm OS Programmer's API Reference/55}}, {{goto StrCompare,StrCompare()}}, {{goto StrNCompare,StrNCompare()}} !{{anchor StrCat}}StrCat 関数 {{goto top,^TOP^}} '''目的''' 1 つの null で終了する文字列を他の文字列に連結させます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrCat ( Char *dst, const Char *src ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ dst}} **null で終了する連結先の文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ stc}} **null で終了する連結元の文字列へのポインタ '''返り値''' 連結先の文字列へのポインタを返します。 !{{anchor StrChr}}StrChr 関数 {{goto top,^TOP^}} '''目的''' 文字列内の文字を検索します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrChr ( const Char *str, WChar chr ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ str}} **検索が行われる文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ chr}} **検索される文字 '''返り値''' {{span style='color:blue;font-family:monospace;',str}} の中で最初に {{span style='color:blue;font-family:monospace;',chr}} に一致した文字へのポインタを返します。文字が見つからなかった場合は {{span style='color:blue;font-family:monospace;',NULL}} を返します。 '''コメント''' この関数を、標準 {{span style='color:blue;font-family:monospace;',strchr}} ルーチンの代わりに、使用します。 この関数はシングル-バイト文字とマルチ-バイト文字の両方を正確にハンドルします。しかしながら{{span style='color:blue;font-family:monospace;',StrChr}} に {{span style='color:blue;font-family:monospace;',Char}} 変数ではなく {{span style='color:blue;font-family:monospace;',WChar}} 変数を確実に渡すようにしてください。{{span style='color:blue;font-family:monospace;',Char}} 変数を渡した場合、関数は渡された変数を {{span style='color:blue;font-family:monospace;',WChar}} へと符号-拡張します。これは、値が 0x80 以上の場合に問題を引き起こします。 '''互換性''' Palm OS バージョン 1.0 では、このルーチンは正しく '\0' 文字を見つけられません。 '''参照''' {{goto StrStr,StrStr()}} !{{anchor StrCompare}}StrCompare 関数 {{goto top,^TOP^}} '''目的''' 2 つの文字列を比較します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrCompare ( const Char *s1, const Char *s2 ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s1}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ s2}} **文字列へのポインタ '''返り値''' *0: 文字列が一致する場合。 *正値: アルファベットによるソートによって {{span style='color:blue;font-family:monospace;',s1}} が {{span style='color:blue;font-family:monospace;',s2}} の後にくる場合 *負値: アルファベットによるソートによって {{span style='color:blue;font-family:monospace;',s1}} が {{span style='color:blue;font-family:monospace;',s2}} の前にくる場合 '''コメント''' この関数または {{goto StrCompareAscii,StrCompareAscii()}} を、標準 {{span style='color:blue;font-family:monospace;',strcmp}} ルーチンの代わりに、使用します。この関数は大文字小文字を区別します。 マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}} を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、{{span style='color:blue;font-family:monospace;',TxtCompare}} はさらに一致するテキストの長さを返すことができます。 '''互換性''' Palm OS 4.0 より前では、{{span style='color:blue;font-family:monospace;',StrCompare}} と {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}} は 1 レベルの比較を実行し、等価でない文字を見つけるとすぐに返ります。例えば、文字列 """celery""" と文字列 """Cauliflower""" を比較した場合、両方の関数とも """celery""" が """Cauliflower""" の前にくるべきだということを示す値を返します。なぜなら、それらの関数はソートで """c""" を """C""" の前に持ってきたからです。 Palm OS 4.0 では、{{span style='color:blue;font-family:monospace;',StrCompare}} は {{span style='color:blue;font-family:monospace;',TxtCompare}} を呼び出し、{{span style='color:blue;font-family:monospace;',TxtCompare}} は精度を上げるために 6 つまでの比較テーブルを使って比較を行います。結果として、Palm OS 4.0 以降では、{{span style='color:blue;font-family:monospace;',StrCompare}} はソートにより """Califlower""" を """celery""" の前に持ってきます。 '''参照''' {{goto StrNCompare,StrNCompare()}}, {{goto StrNCaselessCompare,StrNCaselessCompare()}}, {{goto TxtCaselessCompare,TxtCaselessCompare()|Palm OS Programmer's API Reference/55}} !{{anchor StrCompareAscii}}StrCompareAscii 関数 {{goto top,^TOP^}} '''目的''' 2 つの ASCII 文字列を比較します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrCompareAscii ( const Char *s1, const Char *s2 ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s1}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ s2}} **文字列へのポインタ '''返り値''' *0: 文字列が一致する場合。 *正値: アルファベットによるソートによって {{span style='color:blue;font-family:monospace;',s1}} が {{span style='color:blue;font-family:monospace;',s2}} の後にくる場合 *負値: アルファベットによるソートによって {{span style='color:blue;font-family:monospace;',s1}} が {{span style='color:blue;font-family:monospace;',s2}} の前にくる場合 '''コメント''' この関数を、標準 {{span style='color:blue;font-family:monospace;',strcmp}} ルーチンの代わりに使用します。7 ビット ASCII 文字列であることが保証されている文字列に対して、大文字小文字を区別する比較を行うために使用します。この関数は高速に、単純な 1 バイト対 1 バイトの比較を行います。この比較は決して変更されないことが保証されます。 '''互換性''' {{goto 4.0 New Feature Set,4.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 '''参照''' {{goto StrCompare,StrCompare()}}, {{goto StrNCompare,StrNCompare()}}, {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}}, {{goto StrCaselessCompare,StrCaselessCompare()}}, {{goto StrNCaselessCompare,StrNCaselessCompare()}}, {{goto TxtCaselessCompare,TxtCaselessCompare()|Palm OS Programmer's API Reference/55}}, {{goto StrNCompareAscii,StrNCompareAscii()}} !{{anchor StrCopy}}StrCopy 関数 {{goto top,^TOP^}} '''目的''' 1 つの文字列を他の文字列にコピーします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrCopy ( Char *dst, const Char *src ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ dst}} **コピー先の文字列 *{{span style='color:blue;font-family:monospace;',→ src}} **コピー元の文字列 '''返り値''' コピー先の文字列へのポインタを返します。 '''コメント''' この関数を、標準 {{span style='color:blue;font-family:monospace;',strpy}} ルーチンの代わりに、使用します。 この関数はオーバラップしている文字列(訳者?)に対しては適切に機能しません。 !{{anchor StrDelocalizeNumber}}StrDelocalizeNumber 関数 {{goto top,^TOP^}} '''目的''' 文字列として渡された数のローカライズを解除します。ローカライズ表記された数を US 表記(小数点と 1000 ごとのカンマ)の数に変換します。現在の 1000 ごとのセパレータと小数点を渡す必要があります。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrDelocalizeNumber ( Char *s, Char thousandSeparator, Char decimalSeparator ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',←→ s}} **ASCII 文字列としての数へのポインタ *{{span style='color:blue;font-family:monospace;',→ thousandSeparator}} **現在の 1000 ごとのセパレータ *{{span style='color:blue;font-family:monospace;',→ decimalSeparator}} **現在の小数点 '''返り値''' 変更された数へのポインタを返し、{{span style='color:blue;font-family:monospace;',s}} の文字列を変更します。 '''コメント''' 現在の {{span style='color:blue;font-family:monospace;',thousandSeparator}} と {{span style='color:blue;font-family:monospace;',decimalSeparator}} は、{{goro PrefGetPreference,PrefGetPreference()|Palm OS Programmer's API Reference/48}} を使って {{span style='color:blue;font-family:monospace;',prefNumberFormat}} 設定値を取得し、それから、返された {{goto NumberFomatType,NumberFormatType|Palm OS Programmer's API Reference/41}} を {{goto LocGetNumberSeparators,LocGetNumberSeparator()|Palm OS Programmer's API Reference/60}} に渡すことで決定できます。以下に例を示します。 Char *localizedNum; NumberFormatType numFormat; Char thousandsSeparator, decimalSeparator; numFormat = (NumberFormatType) PrefGetPreference(prefNumberFormat); LocGetNumberSeparators(numFormat, &thousandsSeparator, &decimalSeparator); StrDelocalizeNumber(localizedNum, thousandsSeparator, decimalSeparator); '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 '''参照''' {{goto StrLocalizeNumber,StrLocalizeNumber()}}, {{goto LocGetNumberSeparators,LocGetNumberSeparators()|Palm OS Programmer's API Reference/60}} !{{anchor StrIToA}}StrIToA 関数 {{goto top,^TOP^}} '''目的''' 整数を ASCII に変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrIToA ( Char *s, Int32 i ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',← s}} **結果が保存されるサイズが {{span style='color:blue;font-family:monospace;',maxStrIToALen}} の文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ i}} **変換する整数 '''返り値''' 結果の文字列へのポインタを返します。 '''参照''' {{goto StrAToI,StrAToI()}}, {{goto StrIToH,StrIToH()}} !{{anchor StrIToH}}StrIToH {{goto top,^TOP^}} '''目的''' 整数を 16 進数の ASCII に変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrIToH ( Char *s, UInt32 i ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',← s}} **結果が保存される文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ i}} **変換する整数 '''返り値''' 文字列ポインタ {{span style='color:blue;font-family:monospace;',s}} を返します。 '''参照''' {{goto StrIToA,StrIToA()}} !{{anchor StrLen}}StrLen 関数 {{goto top,^TOP^}} '''目的''' 文字列の長さを計算します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' UInt16 StrLen ( const Char *src ) '''パラメータ''' 文字列の長さをバイト数で返します。 '''コメント''' この関数を、標準 {{span style='color:blue;font-family:monospace;',strlen}} ルーチンの代わりに、使用します。 この関数は文字列の長さをバイト数で返します。マルチ-バイト文字をサポートしているシステムでは、返される数は必ずしも文字数とはなりません。 '''互換性''' Palm OS 3.5 と Palm OS 4.x では、この関数は {{span style='color:blue;font-family:monospace;',Int16}} を返すように宣言されていました。Palm OS Garnet と Palm OS 3.5 より前では、この関数は {{span style='color:blue;font-family:monospace;',UInt16}} を返します。 !{{anchor StrLocalizeNumber}}StrLocalizeNumber 関数 {{goto top,^TOP^}} '''目的''' (文字列として渡された)数を、指定された 1000 ごとのセパレータと小数点を使って、ローカライズ フォーマットに変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrLocalizeNumber ( Char *s, Char thousandSeparator, Char decimalSeparator ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',←→ s}} **ローカライズする数を表す ASCII 文字列 *{{span style='color:blue;font-family:monospace;',→ thousandSeparator}} **ローカライズされた 1000 ごとのセパレータ *{{span style='color:blue;font-family:monospace;',→ decimalSeparator}} **ローカライズされた小数点 '''返り値''' 変更された数へのポインタを返します。{{span style='color:blue;font-family:monospace;',s}} の中の数を表す文字列を、すべての "," を {{span style='color:blue;font-family:monospace;',thousandSeparator}} で置き換え、すべての "." を {{span style='color:blue;font-family:monospace;',decimalSeparator}} で置き換えることによって、変換します。 '''コメント''' 現在の {{span style='color:blue;font-family:monospace;',thousandSeparator}} と {{span style='color:blue;font-family:monospace;',decimalSeparator}} は、{{goto PrefGetPreference,PrefGetPreference()|Palm OS Programmer's API Reference/48}} を使って {{span style='color:blue;font-family:monospace;',prefNumberFormat}} 設定値を取得し、それから、返された {{goto NumberFomatType,NumberFormatType|Palm OS Programmer's API Reference/41}} を {{goto LocGetNumberSeparators,LocGetNumberSeparator()|Palm OS Programmer's API Reference/60}} に渡すことで決定できます。以下に例を示します。 Char *localizedNum; NumberFormatType numFormat; Char thousandsSeparator, decimalSeparator; numFormat = (NumberFormatType) PrefGetPreference(prefNumberFormat); LocGetNumberSeparators(numFormat, &thousandsSeparator, &decimalSeparator); StrDelocalizeNumber(localizedNum, thousandsSeparator, decimalSeparator); '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 '''参照''' {{goto StrDelocalizeNumber,StrDelocalizeNumber()}} !{{anchor StrNCaselessCompare}}StrNCaselessCompare 関数 {{goto top,^TOP^}} '''目的''' 2 つの文字列を n 文字まで、大文字か小文字か区別せず、アクセント(訳者注: 仏語や独語のアクセント付き文字のことを言っていると思われる)を気にせず、比較します。 '''Prototype''' Int16 StrNCaselessCompare ( const Char *s1, const Char *s2, Int32 n ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s1}} **最初の文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ s2}} **2 番目の文字列へのポインタ '''返り値''' *0: 文字列が一致する場合。 *正値: {{span style='color:blue;font-family:monospace;',s1}} > {{span style='color:blue;font-family:monospace;',s2}} *負値: {{span style='color:blue;font-family:monospace;',s1}} < {{span style='color:blue;font-family:monospace;',s2}} '''コメント''' マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに {{goto TxtCaselessCompare,TxtCaselessCompare()|Palm OS Programmer's API Reference/55}} (または、大文字小文字を区別する比較では {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}})を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、{{span style='color:blue;font-family:monospace;',TxtCaselessCompare}} はさらに一致するテキストの長さを返すことができます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。Palm OS 4.0 では、{{span style='color:blue;font-family:monospace;',s1}} と {{span style='color:blue;font-family:monospace;',s2}} の両方が null で終了している必要があります。 !{{anchor StrNCat}}StrNCat 関数 {{goto top,^TOP^}} '''目的''' 1 つの文字列を、他の貼付先となる文字列に最大 ''n'' バイト(終端の null 文字を含む)、連結させます。 ---- '''重要:''' Palm OS の {{span style='color:blue;font-family:monospace;',StrNCat}} の実装は標準 C ライブラリの実装とは異なります。詳細についてはコメントを参照してください。 ---- '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrNCat ( Char *dst, const Char *src, Int16 n ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ dst}} **null で終了する連結先の文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ src}} **連結元の文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ n}} **{{span style='color:blue;font-family:monospace;',dst}} のための最大バイト長(終端の null 文字を含む) '''返り値''' 連結先の文字列へのポインタ '''コメント''' この関数は標準 C の {{span style='color:blue;font-family:monospace;',strncat}} 関数とは以下の点で異なります。 *{{span style='color:blue;font-family:monospace;',StrNCat}} はパラメータ {{span style='color:blue;font-family:monospace;',n}} を {{span style='color:blue;font-family:monospace;',dst}} のための最大バイト長として扱います。このことは、この関数は {{span style='color:blue;font-family:monospace;',src}} から最大 {{span style='color:blue;font-family:monospace;',"n - StrLen(dst) - 1"}} バイト分をコピーするということを意味します。標準 C 関数は常に {{span style='color:blue;font-family:monospace;',src}} から {{span style='color:blue;font-family:monospace;',dst}} に {{span style='color:blue;font-family:monospace;',n}} バイト分コピーします。(標準 C は、{{span style='color:blue;font-family:monospace;',src}} の長さが {{span style='color:blue;font-family:monospace;',n}} よりも短い場合、{{span style='color:blue;font-family:monospace;',src}} 全体を {{span style='color:blue;font-family:monospace;',dst}} にコピーします。) *連結先の文字列の長さが {{span style='color:blue;font-family:monospace;',n}} - 1 に達すると、{{span style='color:blue;font-family:monospace;',StrNCat}} は {{span style='color:blue;font-family:monospace;',src}} からバイトをコピーすることを停止し、終端の null 文字を {{span style='color:blue;font-family:monospace;',dst}} に追加します。コピーを開始する前に、連結先の文字列の長さがすでに {{span style='color:blue;font-family:monospace;',n}} - 1 以上である場合、{{span style='color:blue;font-family:monospace;',StrNCat}} は {{span style='color:blue;font-family:monospace;',src}} から何のデータもコピーしません。 *標準 C 関数では、{{span style='color:blue;font-family:monospace;',src}} が {{span style='color:blue;font-family:monospace;',n}} よりも短い場合、{{span style='color:blue;font-family:monospace;',src}} 文字列全体が {{span style='color:blue;font-family:monospace;',dst}} にコピーされ、それから、残りのスペースは null 文字で埋められます。リリースされる ROM では、{{span style='color:blue;font-family:monospace;',StrNCat}} は残りのスペースを null 文字で埋めません。デバッグ ROM では、{{span style='color:blue;font-family:monospace;',StrNCat}} は {{span style='color:blue;font-family:monospace;',0xFE}} の値とバイトで埋めます。 マルチ-バイト文字エンコードを持つシステムでは、この関数はマルチ-バイト文字の断片をコピーしないことを保証します。{{span style='color:blue;font-family:monospace;',src}} からコピーされる最後のバイトがマルチ-バイト文字の先頭または中間である場合、{{span style='color:blue;font-family:monospace;',StrNCat}} は {{span style='color:blue;font-family:monospace;',dst}} の中を 1 つ前の文字の終端のすぐ後のバイトまでバックし、そのバイトを null 文字で置き換えます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 !{{anchor StrNCompare}}StrNCompare 関数 {{goto top,^TOP^}} '''目的''' 2 つの文字列を ''n'' バイトまで比較します。この関数は大文字と小文字を区別し、アクセント(訳者注: 仏語や独語のアクセント付き文字のことだと思われる)を気にします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrNCompare ( const Char *s1, const Char *s2, Int32 n ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s1}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ s2}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ n}} **テキストを比較するバイト長 '''返り値''' *0: 文字列が一致する場合。 *正値: {{span style='color:blue;font-family:monospace;',s1}} > {{span style='color:blue;font-family:monospace;',s2}} *負値: {{span style='color:blue;font-family:monospace;',s1}} < {{span style='color:blue;font-family:monospace;',s2}} '''コメント''' マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}} を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、{{span style='color:blue;font-family:monospace;',TxtCaselessCompare}} はさらに一致するテキストの長さを返すことができます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。Palm OS 4.0 では、{{span style='color:blue;font-family:monospace;',s1}} と {{span style='color:blue;font-family:monospace;',s2}} の両方が null で終了している必要があります。 '''参照''' {{goto StrCompare,StrCompare()}}, {{goto StrNCaselessCompare,StrNCaselessCompare()}}, {{goto StrCaselessCompare,StrCaselessCompare()}}, {{goto TxtCaselessCompare,TxtCaselessCompare(),}} {{goto StrNCompareAscii,StrNCompareAscii()}} !{{anchor StrNCompareAscii}}StrNCompareAscii 関数 {{goto top,^TOP^}} '''目的''' 2 つの ASCII 文字列を ''n'' バイトまで比較します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrNCompareAscii ( const Char *s1, const Char *s2, Int32 n ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s1}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ s2}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ n}} **テキストを比較するバイト長 '''返り値''' *0: 文字列が一致する場合。 *正値: アルファベットによるソートによって {{span style='color:blue;font-family:monospace;',s1}} が {{span style='color:blue;font-family:monospace;',s2}} の後にくる場合 *負値: アルファベットによるソートによって {{span style='color:blue;font-family:monospace;',s1}} が {{span style='color:blue;font-family:monospace;',s2}} の前にくる場合 '''コメント''' この関数を、標準 {{span style='color:blue;font-family:monospace;',strncmp}} ルーチンの代わりに使用します。7 ビット ASCII 文字列であることが保証されている文字列に対して、大文字小文字を区別する比較を行うために使用します。この関数は高速に、単純な 1 バイト対 1 バイトの比較を行います。この比較は決して変更されないことが保証されます。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 '''参照''' {{goto StrCompare,StrCompare()}}, {{goto StrNCompare,StrNCompare()}}, {{goto TxtCompare,TxtCompare()|Palm OS Programmer's API Reference/55}}, {{goto StrCaselessCompare,StrCaselessCompare()}}, {{goto StrNCaselessCompare,StrNCaselessCompare()}}, {{goto TxtCaselessCompare,TxtCaselessCompare()|Palm OS Programmer's API Reference/55}}, {{goto StrCompareAscii,StrCompareAscii()}} !{{anchor StrNCopy}}StrNCopy 関数 {{goto top,^TOP^}} '''目的''' コピー元文字列からコピー先文字列に最大 ''n'' バイトまでコピーします。コピー元文字列の長さが ''n''-1 以下である場合、{{span style='color:blue;font-family:monospace;',dst}} 文字列をインデックス ''n''-1 で終わらせます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrNCopy ( Char *dst, const Char *src, Int16 n ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ dst}} **コピー先文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ src}} **コピー元文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ n}} **{{span style='color:blue;font-family:monospace;',src}} 文字列からコピーする最大バイト数 '''返り値''' 返り値はありません。 '''コメント''' マルチ-バイト文字エンコードを持つシステムでは、この関数はマルチ-バイト文字の断片をコピーしないことを保証します。{{span style='color:blue;font-family:monospace;',src}} の {{span style='color:blue;font-family:monospace;',n}} 番目のバイトがマルチ-バイト文字の先頭または中間である場合、{{span style='color:blue;font-family:monospace;',StrNCopy}} は {{span style='color:blue;font-family:monospace;',dst}} の中を 1 つ前の文字の終端のすぐ後のバイトまでバックし、残りのバイトを null 文字で置き換えます。 返ってきた {{span style='color:blue;font-family:monospace;',dst}} の {{span style='color:blue;font-family:monospace;',n}} 番目のバイトはマルチ-バイト文字の終端バイトであるかもしれないということに注意してください。コピー先文字列の最後の文字を NULL にセットすることで文字列を終わらせるつもりでいる場合、コピー先文字列の全体の長さを {{span style='color:blue;font-family:monospace;',StrNCopy}} に渡してはいけません。そうした場合、最後の文字の終端バイトを上書きしてしまうかもしれません。 // WRONG! You may overwrite part of multi-byte // character. Char dst[n]; StrNCopy(dst, src, n); dst[n-1] = chrNull; こうする代わりに、コピー先文字列の最後のバイトを上書きする場合、その文字列のサイズよりも 1 少ない値を {{span style='color:blue;font-family:monospace;',StrNCopy}} に渡してください。 // RIGHT. Instead pass n-1 to StrNCopy. Char dst[n]; StrNCopy(dst, src, n-1); dst[n-1] = chrNull; '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 !{{anchor StrPrintF}}StrPrintF 関数 {{goto top,^TOP^}} '''目的''' 指定されたフォーマットに変換された出力を文字列に書き込む ANSI C {{span style='color:blue;font-family:monospace;',springf}} 呼び出しの一部を実装します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrPrintF ( Char *s, const Char *formatStr, ... ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ s}} **結果が書き込まれる文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ formatStr}} **フォーマット指定文字列へのポインタ *{{span style='color:blue;font-family:monospace;',...}} **{{span style='color:blue;font-family:monospace;',formatStr}} によって指定されたようにフォーマットされる 0 個かそれ以上の引数 '''返り値''' 結果の文字列に書き込まれた文字の数。エラーが起きた場合、負値を返します。 '''コメント''' この関数はフォーマットを行うために内部的に {{goto StrVPrintF,StrVPrintF()}} を呼び出します。サポートされるフォーマット指定子の詳細については、関数の説明 -- 特に{{goto 表 52.1,表 52.1}} -- を参照してください。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 '''参照''' {{goto StrVPrintF,StrVPrintF()}} !{{anchor StrStr}}StrStr 関数 {{goto top,^TOP^}} '''目的''' 文字列内の部分文字列を検索します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrStr ( const Char *str, const Char *token ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ str}} **検索が行われる文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ token}} **検索される文字列へのポインタ '''返り値''' {{span style='color:blue;font-family:monospace;',str}} の中で {{span style='color:blue;font-family:monospace;',token}} が最初に見つかった位置へのポインタを返します。。見つからなかった場合、{{span style='color:blue;font-family:monospace;',NULL}} を返します。 '''コメント''' この関数を、標準 {{span style='color:blue;font-family:monospace;',strstr}} ルーチンの代わりに、使用します。 マルチ-バイト文字エンコードを持つシステムでは、この関数はマルチ-バイト文字の断片に一致しないことを保証します。一致する文字列が文字間の境界(訳者注: マルチ-バイト文字の中間または終端バイト)から始まる場合、この関数は {{span style='color:blue;font-family:monospace;',NULL}} を返します。 ---- '''NOTE:''' {{span style='color:blue;font-family:monospace;',token}} パラメータの値が空文字列の場合、この関数は {{span style='color:blue;font-family:monospace;',NULL}} を返します。これは、標準 {{span style='color:blue;font-family:monospace;',strstr}} 関数と異なる点です。標準 {{span style='color:blue;font-family:monospace;',strstr}} 関数は、{{span style='color:blue;font-family:monospace;',token}} が空文字列の場合に {{span style='color:blue;font-family:monospace;',str}} を返します。 ---- '''参照''' {{goto StrChr,StrChr()}} !{{anchor StrToLower}}StrToLower 関数 {{goto top,^TOP^}} '''目的''' 文字列の中のすべての文字を lowercase (訳者注: 小文字など?)に変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Char *StrToLower ( Char *dst, const Char *src ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ dst}} **文字列へのポインタ *{{span style='color:blue;font-family:monospace;',→ src}} **null で終了する文字列へのポインタ '''返り値''' 変換先の文字列へのポインタを返します。 '''互換性''' Palm OS バージョン 3.5 より前では、この関数は日本語デバイス上のアクセント付きの文字のみを変換します(訳者注: ?「ぱ」を「は」に変換するということか?)。Palm OS バージョン 3.5 以降では、ラテン語デバイス上のアクセント付き文字を含む、すべての文字が適切に lowercase に変換されます。 !{{anchor StrVPrintF}}StrVPrintF 関数 {{goto top,^TOP^}} '''目的''' フォーマットされた出力を文字列に書き込む ANSI C {{span style='color:blue;font-family:monospace;',vsprintf}} 呼び出しの一部を実装します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',StringMgr.h}} '''Prototype''' Int16 StrVPrintF ( Char *s, const Char *formatStr, va_list arg ) '''パラメータ''' 結果の文字列に書き込まれた null 終端子を含まない文字の数。エラーが起きた場合、負値を返します。 '''コメント''' C {{span style='color:blue;font-family:monospace;',vsprintf}} 関数に似て、この関数は、渡す開発者が作成する引数の数が可変で、それらの引数をこの関数に関数によって呼び出されるように設計されています。この関数をどのように使うかについての詳細は、''Palm OS Programmer's Companion, vol. I'' の {{goto StrVPrinfF の使用,「StrVPrinfF の使用」|Palm OS Programmer's Companion Volume I/8-3}} を参照するか、標準 C リファレンス ブックの {{span style='color:blue;font-family:monospace;',vdprintf}} を参照してください。 現在のところ、変換指定子 {{span style='color:blue;font-family:monospace;',"%d, %i, %u, &x, %s, %c"}} が {{span style='color:blue;font-family:monospace;',StrVPrintF}} (と関連する関数)によって実装されています。サポートされるオプションの修飾子には、{{span style='color:blue;font-family:monospace;',"+, -"}}, <スペース>, {{span style='color:blue;font-family:monospace;',*}}, <数字>, {{span style='color:blue;font-family:monospace;',h}}, それに {{span style='color:blue;font-family:monospace;',l}} (long) があります。以下はこれらのフォーマット指定子がどのように機能するかについての簡単な説明です(詳細は C についての本を参照してください)。 各変換指定子は % 文字から始まります。% 文字に続いて、{{goto 表 52.1,表 52.1}} の中でリストされている文字の 1 つ以上が連なります。 {{anchor 表 52.1}} '''表 52.1 StrVPrintF フォーマット指定子''' ,'''文字''',,'''説明''' ,"{{span style='color:blue;font-family:monospace;',+}}",,"符号付けされた変換によって導入される数の前に常に符号を置くことを指定します。両方が使用される場合、+ はスペースをオーバライドします(訳者注: 両方とは?+ とスペースの両方??)。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%+d %+d"",4,-5);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',+4 -5}}" ,"{{span style='color:blue;font-family:monospace;',-}}",,"表示される値を、表示が許されている範囲内で、左揃えさせることを指定します。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%5d%-5d%d"",6,9,8);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',69 8}}" ,"<スペース>",,"負値の前には常にマイナス符号を置き、正値の前には常にスペースを置くことを指定します。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""% d % d"",4,-5);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;', 4 -5}}" ,"{{span style='color:blue;font-family:monospace;',*}}",,"リストの中の次の引数(整数でなければなりません)がフィールドの幅を指定していることを示します。このケースでは、その引数のすぐ後の引数がこのフィールドの幅として使用されます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%*d %d"",4,8,5);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}(半角スペースが 3 個){{span style='color:blue;font-family:monospace;',8 5}}{{br}}訳者注: 原文では以下のようになっていたが誤りと思われる。{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%*d%d"",4,8,5);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',8 5}}" ,"<数>",,"フィールドの最小幅を指定します。変換された値の文字数がフィールド幅よりも小さい場合、フィールド幅を満たすように左側(左揃えが指定されている場合は右側)にスペースが追加されます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%d%5d"",4,3);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',4}}(半角スペースが 4 個){{span style='color:blue;font-family:monospace;',3}}{{br}}訳者注: 原文では以下のようになっていたが誤りと思われる。{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%d%5d"",4,3);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',4 3}}" ,"{{span style='color:blue;font-family:monospace;',h}}",,"その後に続く d, i, u, x 変換は {{span style='color:blue;font-family:monospace;',short}} または {{span style='color:blue;font-family:monospace;',unsigned short}} に相当することを指定します。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%hd"",401);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',401}}" ,"{{span style='color:blue;font-family:monospace;',l}} または {{span style='color:blue;font-family:monospace;',L}}",,"その後に続く d, i, u, x, c 変換は {{span style='color:blue;font-family:monospace;',long}} または {{span style='color:blue;font-family:monospace;',unsigned long}} に相当することを指定します。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s,""%ld"",999999999);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',999999999}}" ,"<文字>",,"文字は実行される変換の型を指定します。サポートされる変換文字は以下のものです。" ,,"{{span style='color:blue;font-family:monospace;',d}} または {{span style='color:blue;font-family:monospace;',i}}","引数は 10 進法の符号付き整数に変換されます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%d %d"",4,-4);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',4 -4}}" ,,"{{span style='color:blue;font-family:monospace;',u}}","引数は 10 進法の符号無し整数に変換されます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%u %u"",4,-4);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',4 65532}}" ,,"{{span style='color:blue;font-family:monospace;',x}}","引数は 16 進法に変換されます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%x"",125);{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',0000007D}}" ,,"{{span style='color:blue;font-family:monospace;',s}}","文字列({{span style='color:blue;font-family:monospace;',char *}})の引数が出力先の文字列にコピーされます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""ABC%s"",""DEF"");{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',ABCDEF}}" ,,"{{span style='color:blue;font-family:monospace;',c}} または {{span style='color:blue;font-family:monospace;',C}}","1 個の文字の引数が出力先の文字列にコピーされます。{{span style='color:blue;font-family:monospace;',C}} が使用される場合、または、{{span style='color:blue;font-family:monospace;',}} 修飾子が使用される場合、引数は {{span style='color:blue;font-family:monospace;',WChar}} でなければなりません。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""Telephone%c"",'s');{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',Telephones}}" ,,"{{span style='color:blue;font-family:monospace;',%}}","% 文字が出力先の文字列にコピーされます。{{br}}例:{{br}}{{span_begin style='color:blue;font-family:monospace;'}}StrPrintF(s, ""%%"",""DEF"");{{span_end}}{{br}}{{span style='color:blue;font-family:monospace;',s}} への出力:{{br}}{{span style='color:blue;font-family:monospace;',%}}" '''例''' ここで、この関数呼び出しをどのように使用するかの例を示します。 #include void MyPrintF(Char *s, Char *formatStr, ...) { va_listargs; Char text[0x100]; va_start(args,formatStr); StrVPrintF(text, formatStr,args); va_end(args); MyPutS(text); } '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 '''参照''' {{goto StrPrintF,StrPrintF()}} ---- [[← 51 章に戻る|Palm OS Programmer's API Reference/51]] [[↑トップへ|Palm OS Programmer's API Reference]] [[53 章に進む →|Palm OS Programmer's API Reference/53]]