Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Palm OS Programmer's API Reference/52

← 51 章に戻る? ↑トップへ 53 章に進む →?



この章の索引


52 文字列マネージャ

この章では、文字列マネージャのための参照資源を提供します。文字列マネージャ API はヘッダ ファイル StringMgr.h で定義されています。

追加情報は、Palm OS Programmer's Companion, vol. I「テキスト」を参照してください。

文字列マネージャ関数 ^TOP^

StrAToI 関数 ^TOP^

目的

文字列を整数に変換します。

宣言されている場所

StringMgr.h

Prototype

Int32 StrAToI (
	const Char *str
)

パラメータ

  • → str
    • 変換する文字列へのポインタ

返り値

整数を返します。

コメント

この関数を標準 atoi ルーチンの代わりに使用します。

StrCaselessCompare 関数 ^TOP^

目的

2 つの文字列を、大文字か小文字区別せず、アクセント(訳者注: 仏語や独語などのアクセント付きの文字のことだと思われる)を気にせずに、比較します。

宣言されている場所

StringMgr.h

Prototype

Int16 StrCaselessCompare (
	const Char *s1,
	const Char *s2
)

パラメータ

  • → s1
    • 文字列へのポインタ
  • → s2
    • 文字列へのポインタ

返り値

  • 0: 文字列が一致する場合。
  • 正値: s1 > s2
  • 負値: s1 < s2

コメント

この関数を標準 stricmp ルーチンの代わりに使用します。

マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに TxtCaselessCompare()|Palm OS Programmer's API Reference/55 (または、大文字小文字を区別する比較では TxtCompare()|Palm OS Programmer's API Reference/55)を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、TxtCaselessCompare はさらに一致するテキストの長さを返すことができます。

参照

StrNCaselessCompare(), TxtCaselessCompare()|Palm OS Programmer's API Reference/55, StrCompare(), StrNCompare()

StrCat 関数 ^TOP^

目的

1 つの null で終了する文字列を他の文字列に連結させます。

宣言されている場所

StringMgr.h

Prototype

Char *StrCat (
	Char *dst,
	const Char *src
)

パラメータ

  • → dst
    • null で終了する連結先の文字列へのポインタ
  • → stc
    • null で終了する連結元の文字列へのポインタ

返り値

連結先の文字列へのポインタを返します。

StrChr 関数 ^TOP^

目的

文字列内の文字を検索します。

宣言されている場所

StringMgr.h

Prototype

Char *StrChr (
	const Char *str,
	WChar chr
)

パラメータ

  • → str
    • 検索が行われる文字列へのポインタ
  • → chr
    • 検索される文字

返り値

str の中で最初に chr に一致した文字へのポインタを返します。文字が見つからなかった場合は NULL を返します。

コメント

この関数を、標準 strchr ルーチンの代わりに、使用します。

この関数はシングル-バイト文字とマルチ-バイト文字の両方を正確にハンドルします。しかしながらStrChrChar 変数ではなく WChar 変数を確実に渡すようにしてください。Char 変数を渡した場合、関数は渡された変数を WChar へと符号-拡張します。これは、値が 0x80 以上の場合に問題を引き起こします。

互換性

Palm OS バージョン 1.0 では、このルーチンは正しく '\0' 文字を見つけられません。

参照

StrStr()

StrCompare 関数 ^TOP^

目的

2 つの文字列を比較します。

宣言されている場所

StringMgr.h

Prototype

Int16 StrCompare (
	const Char *s1,
	const Char *s2
)

パラメータ

  • → s1
    • 文字列へのポインタ
  • → s2
    • 文字列へのポインタ

返り値

  • 0: 文字列が一致する場合。
  • 正値: アルファベットによるソートによって s1s2 の後にくる場合
  • 負値: アルファベットによるソートによって s1s2 の前にくる場合

コメント

この関数または StrCompareAscii() を、標準 strcmp ルーチンの代わりに、使用します。この関数は大文字小文字を区別します。

マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに TxtCompare()|Palm OS Programmer's API Reference/55 を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、TxtCompare はさらに一致するテキストの長さを返すことができます。

互換性

Palm OS 4.0 より前では、StrCompareTxtCompare()|Palm OS Programmer's API Reference/55 は 1 レベルの比較を実行し、等価でない文字を見つけるとすぐに返ります。例えば、文字列 """celery""" と文字列 """Cauliflower""" を比較した場合、両方の関数とも """celery""" が """Cauliflower""" の前にくるべきだということを示す値を返します。なぜなら、それらの関数はソートで """c""" を """C""" の前に持ってきたからです。

Palm OS 4.0 では、StrCompareTxtCompare を呼び出し、TxtCompare は精度を上げるために 6 つまでの比較テーブルを使って比較を行います。結果として、Palm OS 4.0 以降では、StrCompare はソートにより """Califlower""" を """celery""" の前に持ってきます。

参照

StrNCompare(), StrNCaselessCompare(), TxtCaselessCompare()|Palm OS Programmer's API Reference/55

StrCompareAscii 関数 ^TOP^

目的

2 つの ASCII 文字列を比較します。

宣言されている場所

StringMgr.h

Prototype

Int16 StrCompareAscii (
	const Char *s1,
	const Char *s2
)

パラメータ

  • → s1
    • 文字列へのポインタ
  • → s2
    • 文字列へのポインタ

返り値

  • 0: 文字列が一致する場合。
  • 正値: アルファベットによるソートによって s1s2 の後にくる場合
  • 負値: アルファベットによるソートによって s1s2 の前にくる場合

コメント

この関数を、標準 strcmp ルーチンの代わりに使用します。7 ビット ASCII 文字列であることが保証されている文字列に対して、大文字小文字を区別する比較を行うために使用します。この関数は高速に、単純な 1 バイト対 1 バイトの比較を行います。この比較は決して変更されないことが保証されます。

互換性

4.0 New Feature Set が満たされる場合にのみ、実装されます。

参照

StrCompare(), StrNCompare(), TxtCompare()|Palm OS Programmer's API Reference/55, StrCaselessCompare(), StrNCaselessCompare(), TxtCaselessCompare()|Palm OS Programmer's API Reference/55, StrNCompareAscii()

StrCopy 関数 ^TOP^

目的

1 つの文字列を他の文字列にコピーします。

宣言されている場所

StringMgr.h

Prototype

Char *StrCopy (
	Char *dst,
	const Char *src
)

パラメータ

  • → dst
    • コピー先の文字列
  • → src
    • コピー元の文字列

返り値

コピー先の文字列へのポインタを返します。

コメント

この関数を、標準 strpy ルーチンの代わりに、使用します。

この関数はオーバラップしている文字列(訳者?)に対しては適切に機能しません。

StrDelocalizeNumber 関数 ^TOP^

目的

文字列として渡された数のローカライズを解除します。ローカライズ表記された数を US 表記(小数点と 1000 ごとのカンマ)の数に変換します。現在の 1000 ごとのセパレータと小数点を渡す必要があります。

宣言されている場所

StringMgr.h

Prototype

Char *StrDelocalizeNumber (
	Char *s,
	Char thousandSeparator,
	Char decimalSeparator
)

パラメータ

  • ←→ s
    • ASCII 文字列としての数へのポインタ
  • → thousandSeparator
    • 現在の 1000 ごとのセパレータ
  • → decimalSeparator
    • 現在の小数点

返り値

変更された数へのポインタを返し、s の文字列を変更します。

コメント

現在の thousandSeparatordecimalSeparator は、{{goro PrefGetPreference,PrefGetPreference()|Palm OS Programmer's API Reference/48}} を使って prefNumberFormat 設定値を取得し、それから、返された NumberFormatTypeLocGetNumberSeparator()|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); 

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

参照

StrLocalizeNumber(), LocGetNumberSeparators()|Palm OS Programmer's API Reference/60

StrIToA 関数 ^TOP^

目的

整数を ASCII に変換します。

宣言されている場所

StringMgr.h

Prototype

Char *StrIToA (
	Char *s,
	Int32 i
)

パラメータ

  • ← s
    • 結果が保存されるサイズが maxStrIToALen の文字列へのポインタ
  • → i
    • 変換する整数

返り値

結果の文字列へのポインタを返します。

参照

StrAToI(), StrIToH()

StrIToH ^TOP^

目的

整数を 16 進数の ASCII に変換します。

宣言されている場所

StringMgr.h

Prototype

Char *StrIToH (
	Char *s,
	UInt32 i
)

パラメータ

  • ← s
    • 結果が保存される文字列へのポインタ
  • → i
    • 変換する整数

返り値

文字列ポインタ s を返します。

参照

StrIToA()

StrLen 関数 ^TOP^

目的

文字列の長さを計算します。

宣言されている場所

StringMgr.h

Prototype

UInt16 StrLen (
	const Char *src
)

パラメータ

文字列の長さをバイト数で返します。

コメント

この関数を、標準 strlen ルーチンの代わりに、使用します。

この関数は文字列の長さをバイト数で返します。マルチ-バイト文字をサポートしているシステムでは、返される数は必ずしも文字数とはなりません。

互換性

Palm OS 3.5 と Palm OS 4.x では、この関数は Int16 を返すように宣言されていました。Palm OS Garnet と Palm OS 3.5 より前では、この関数は UInt16 を返します。

StrLocalizeNumber 関数 ^TOP^

目的

(文字列として渡された)数を、指定された 1000 ごとのセパレータと小数点を使って、ローカライズ フォーマットに変換します。

宣言されている場所

StringMgr.h

Prototype

Char *StrLocalizeNumber (
	Char *s,
	Char thousandSeparator,
	Char decimalSeparator
)

パラメータ

  • ←→ s
    • ローカライズする数を表す ASCII 文字列
  • → thousandSeparator
    • ローカライズされた 1000 ごとのセパレータ
  • → decimalSeparator
    • ローカライズされた小数点

返り値

変更された数へのポインタを返します。s の中の数を表す文字列を、すべての "," を thousandSeparator で置き換え、すべての "." を decimalSeparator で置き換えることによって、変換します。

コメント

現在の thousandSeparatordecimalSeparator は、PrefGetPreference()|Palm OS Programmer's API Reference/48 を使って prefNumberFormat 設定値を取得し、それから、返された NumberFormatTypeLocGetNumberSeparator()|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); 

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

参照

StrDelocalizeNumber()

StrNCaselessCompare 関数 ^TOP^

目的

2 つの文字列を n 文字まで、大文字か小文字か区別せず、アクセント(訳者注: 仏語や独語のアクセント付き文字のことを言っていると思われる)を気にせず、比較します。

Prototype

Int16 StrNCaselessCompare (
	const Char *s1,
	const Char *s2,
	Int32 n
)

パラメータ

  • → s1
    • 最初の文字列へのポインタ
  • → s2
    • 2 番目の文字列へのポインタ

返り値

  • 0: 文字列が一致する場合。
  • 正値: s1 > s2
  • 負値: s1 < s2

コメント

マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに TxtCaselessCompare()|Palm OS Programmer's API Reference/55 (または、大文字小文字を区別する比較では TxtCompare()|Palm OS Programmer's API Reference/55)を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、TxtCaselessCompare はさらに一致するテキストの長さを返すことができます。

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。Palm OS 4.0 では、s1s2 の両方が null で終了している必要があります。

StrNCat 関数 ^TOP^

目的

1 つの文字列を、他の貼付先となる文字列に最大 n バイト(終端の null 文字を含む)、連結させます。


重要: Palm OS の StrNCat の実装は標準 C ライブラリの実装とは異なります。詳細についてはコメントを参照してください。


宣言されている場所

StringMgr.h

Prototype

Char *StrNCat (
	Char *dst,
	const Char *src,
	Int16 n
)

パラメータ

  • → dst
    • null で終了する連結先の文字列へのポインタ
  • → src
    • 連結元の文字列へのポインタ
  • → n
    • dst のための最大バイト長(終端の null 文字を含む)

返り値

連結先の文字列へのポインタ

コメント

この関数は標準 C の strncat 関数とは以下の点で異なります。

  • StrNCat はパラメータ ndst のための最大バイト長として扱います。このことは、この関数は src から最大 n - StrLen(dst) - 1 バイト分をコピーするということを意味します。標準 C 関数は常に src から dstn バイト分コピーします。(標準 C は、src の長さが n よりも短い場合、src 全体を dst にコピーします。)
  • 連結先の文字列の長さが n - 1 に達すると、StrNCatsrc からバイトをコピーすることを停止し、終端の null 文字を dst に追加します。コピーを開始する前に、連結先の文字列の長さがすでに n - 1 以上である場合、StrNCatsrc から何のデータもコピーしません。
  • 標準 C 関数では、srcn よりも短い場合、src 文字列全体が dst にコピーされ、それから、残りのスペースは null 文字で埋められます。リリースされる ROM では、StrNCat は残りのスペースを null 文字で埋めません。デバッグ ROM では、StrNCat0xFE の値とバイトで埋めます。

マルチ-バイト文字エンコードを持つシステムでは、この関数はマルチ-バイト文字の断片をコピーしないことを保証します。src からコピーされる最後のバイトがマルチ-バイト文字の先頭または中間である場合、StrNCatdst の中を 1 つ前の文字の終端のすぐ後のバイトまでバックし、そのバイトを null 文字で置き換えます。

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

StrNCompare 関数 ^TOP^

目的

2 つの文字列を n バイトまで比較します。この関数は大文字と小文字を区別し、アクセント(訳者注: 仏語や独語のアクセント付き文字のことだと思われる)を気にします。

宣言されている場所

StringMgr.h

Prototype

Int16 StrNCompare (
	const Char *s1,
	const Char *s2,
	Int32 n
)

パラメータ

  • → s1
    • 文字列へのポインタ
  • → s2
    • 文字列へのポインタ
  • → n
    • テキストを比較するバイト長

返り値

  • 0: 文字列が一致する場合。
  • 正値: s1 > s2
  • 負値: s1 < s2

コメント

マルチ-バイト文字エンコードを使用するシステムをサポートするには、この関数の代わりに TxtCompare()|Palm OS Programmer's API Reference/55 を使用することを考えてください。両方の関数とも、シングル-バイト文字をそれらのマルチ-バイト等価物に一致させることができます(訳者注: マルチ-バイト文字を含む文字列の比較ができるということ)が、TxtCaselessCompare はさらに一致するテキストの長さを返すことができます。

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。Palm OS 4.0 では、s1s2 の両方が null で終了している必要があります。

参照

StrCompare(), StrNCaselessCompare(), StrCaselessCompare(), TxtCaselessCompare() StrNCompareAscii()

StrNCompareAscii 関数 ^TOP^

目的

2 つの ASCII 文字列を n バイトまで比較します。

宣言されている場所

StringMgr.h

Prototype

Int16 StrNCompareAscii (
	const Char *s1,
	const Char *s2,
	Int32 n
)

パラメータ

  • → s1
    • 文字列へのポインタ
  • → s2
    • 文字列へのポインタ
  • → n
    • テキストを比較するバイト長

返り値

  • 0: 文字列が一致する場合。
  • 正値: アルファベットによるソートによって s1s2 の後にくる場合
  • 負値: アルファベットによるソートによって s1s2 の前にくる場合

コメント

この関数を、標準 strncmp ルーチンの代わりに使用します。7 ビット ASCII 文字列であることが保証されている文字列に対して、大文字小文字を区別する比較を行うために使用します。この関数は高速に、単純な 1 バイト対 1 バイトの比較を行います。この比較は決して変更されないことが保証されます。

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

参照

StrCompare(), StrNCompare(), TxtCompare()|Palm OS Programmer's API Reference/55, StrCaselessCompare(), StrNCaselessCompare(), TxtCaselessCompare()|Palm OS Programmer's API Reference/55, StrCompareAscii()

StrNCopy 関数 ^TOP^

目的

コピー元文字列からコピー先文字列に最大 n バイトまでコピーします。コピー元文字列の長さが n-1 以下である場合、dst 文字列をインデックス n-1 で終わらせます。

宣言されている場所

StringMgr.h

Prototype

Char *StrNCopy (
	Char *dst,
	const Char *src,
	Int16 n
)

パラメータ

  • → dst
    • コピー先文字列へのポインタ
  • → src
    • コピー元文字列へのポインタ
  • → n
    • src 文字列からコピーする最大バイト数

返り値

返り値はありません。

コメント

マルチ-バイト文字エンコードを持つシステムでは、この関数はマルチ-バイト文字の断片をコピーしないことを保証します。srcn 番目のバイトがマルチ-バイト文字の先頭または中間である場合、StrNCopydst の中を 1 つ前の文字の終端のすぐ後のバイトまでバックし、残りのバイトを null 文字で置き換えます。

返ってきた dstn 番目のバイトはマルチ-バイト文字の終端バイトであるかもしれないということに注意してください。コピー先文字列の最後の文字を NULL にセットすることで文字列を終わらせるつもりでいる場合、コピー先文字列の全体の長さを StrNCopy に渡してはいけません。そうした場合、最後の文字の終端バイトを上書きしてしまうかもしれません。

// WRONG! You may overwrite part of multi-byte
// character.
Char dst[n];
StrNCopy(dst, src, n);
dst[n-1] = chrNull;

こうする代わりに、コピー先文字列の最後のバイトを上書きする場合、その文字列のサイズよりも 1 少ない値を StrNCopy に渡してください。

// RIGHT. Instead pass n-1 to StrNCopy.
Char dst[n];
StrNCopy(dst, src, n-1);
dst[n-1] = chrNull;

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

StrPrintF 関数 ^TOP^

目的

指定されたフォーマットに変換された出力を文字列に書き込む ANSI C springf 呼び出しの一部を実装します。

宣言されている場所

StringMgr.h

Prototype

Int16 StrPrintF (
	Char *s,
	const Char *formatStr,
	 ...
)

パラメータ

  • → s
    • 結果が書き込まれる文字列へのポインタ
  • → formatStr
    • フォーマット指定文字列へのポインタ
  • ...
    • formatStr によって指定されたようにフォーマットされる 0 個かそれ以上の引数

返り値

結果の文字列に書き込まれた文字の数。エラーが起きた場合、負値を返します。

コメント

この関数はフォーマットを行うために内部的に StrVPrintF() を呼び出します。サポートされるフォーマット指定子の詳細については、関数の説明 -- 特に表 52.1 -- を参照してください。

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

参照

StrVPrintF()

StrStr 関数 ^TOP^

目的

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

宣言されている場所

StringMgr.h

Prototype

Char *StrStr (
	const Char *str,
	const Char *token
)

パラメータ

  • → str
    • 検索が行われる文字列へのポインタ
  • → token
    • 検索される文字列へのポインタ

返り値

str の中で token が最初に見つかった位置へのポインタを返します。。見つからなかった場合、NULL を返します。

コメント

この関数を、標準 strstr ルーチンの代わりに、使用します。

マルチ-バイト文字エンコードを持つシステムでは、この関数はマルチ-バイト文字の断片に一致しないことを保証します。一致する文字列が文字間の境界(訳者注: マルチ-バイト文字の中間または終端バイト)から始まる場合、この関数は NULL を返します。


NOTE: token パラメータの値が空文字列の場合、この関数は NULL を返します。これは、標準 strstr 関数と異なる点です。標準 strstr 関数は、token が空文字列の場合に str を返します。


参照

StrChr()

StrToLower 関数 ^TOP^

目的

文字列の中のすべての文字を lowercase (訳者注: 小文字など?)に変換します。

宣言されている場所

StringMgr.h

Prototype

Char *StrToLower (
	Char *dst,
	const Char *src
)

パラメータ

  • → dst
    • 文字列へのポインタ
  • → src
    • null で終了する文字列へのポインタ

返り値

変換先の文字列へのポインタを返します。

互換性

Palm OS バージョン 3.5 より前では、この関数は日本語デバイス上のアクセント付きの文字のみを変換します(訳者注: ?「ぱ」を「は」に変換するということか?)。Palm OS バージョン 3.5 以降では、ラテン語デバイス上のアクセント付き文字を含む、すべての文字が適切に lowercase に変換されます。

StrVPrintF 関数 ^TOP^

目的

フォーマットされた出力を文字列に書き込む ANSI C vsprintf 呼び出しの一部を実装します。

宣言されている場所

StringMgr.h

Prototype

Int16 StrVPrintF (
	Char *s,
	const Char *formatStr,
	va_list arg
)

パラメータ

結果の文字列に書き込まれた null 終端子を含まない文字の数。エラーが起きた場合、負値を返します。

コメント

C vsprintf 関数に似て、この関数は、渡す開発者が作成する引数の数が可変で、それらの引数をこの関数に関数によって呼び出されるように設計されています。この関数をどのように使うかについての詳細は、Palm OS Programmer's Companion, vol. I「StrVPrinfF の使用」 を参照するか、標準 C リファレンス ブックの vdprintf を参照してください。

現在のところ、変換指定子 %d, %i, %u, &x, %s, %cStrVPrintF (と関連する関数)によって実装されています。サポートされるオプションの修飾子には、+, -, <スペース>, *, <数字>, h, それに l (long) があります。以下はこれらのフォーマット指定子がどのように機能するかについての簡単な説明です(詳細は C についての本を参照してください)。

各変換指定子は % 文字から始まります。% 文字に続いて、表 52.1 の中でリストされている文字の 1 つ以上が連なります。


表 52.1 StrVPrintF フォーマット指定子

文字 説明
+ 符号付けされた変換によって導入される数の前に常に符号を置くことを指定します。両方が使用される場合、+ はスペースをオーバライドします(訳者注: 両方とは?+ とスペースの両方??)。
例:
StrPrintF(s, "%+d %+d",4,-5);
s への出力:
+4 -5
- 表示される値を、表示が許されている範囲内で、左揃えさせることを指定します。
例:
StrPrintF(s, "%5d%-5d%d",6,9,8);
s への出力:
69 8
<スペース> 負値の前には常にマイナス符号を置き、正値の前には常にスペースを置くことを指定します。
例:
StrPrintF(s, "% d % d",4,-5);
s への出力:
4 -5
* リストの中の次の引数(整数でなければなりません)がフィールドの幅を指定していることを示します。このケースでは、その引数のすぐ後の引数がこのフィールドの幅として使用されます。
例:
StrPrintF(s, "%*d %d",4,8,5);
s への出力:
(半角スペースが 3 個)8 5
訳者注: 原文では以下のようになっていたが誤りと思われる。
StrPrintF(s, "%*d%d",4,8,5);
s への出力:
8 5
<数> フィールドの最小幅を指定します。変換された値の文字数がフィールド幅よりも小さい場合、フィールド幅を満たすように左側(左揃えが指定されている場合は右側)にスペースが追加されます。
例:
StrPrintF(s, "%d%5d",4,3);
s への出力:
4(半角スペースが 4 個)3
訳者注: 原文では以下のようになっていたが誤りと思われる。
StrPrintF(s, "%d%5d",4,3);
s への出力:
4 3
h その後に続く d, i, u, x 変換は short または unsigned short に相当することを指定します。
例:
StrPrintF(s, "%hd",401);
s への出力:
401
l または L その後に続く d, i, u, x, c 変換は long または unsigned long に相当することを指定します。
例:
StrPrintF(s,"%ld",999999999);
s への出力:
999999999
<文字> 文字は実行される変換の型を指定します。サポートされる変換文字は以下のものです。
d または i 引数は 10 進法の符号付き整数に変換されます。
例:
StrPrintF(s, "%d %d",4,-4);
s への出力:
4 -4
u 引数は 10 進法の符号無し整数に変換されます。
例:
StrPrintF(s, "%u %u",4,-4);
s への出力:
4 65532
x 引数は 16 進法に変換されます。
例:
StrPrintF(s, "%x",125);
s への出力:
0000007D
s 文字列(char *)の引数が出力先の文字列にコピーされます。
例:
StrPrintF(s, "ABC%s","DEF");
s への出力:
ABCDEF
c または C 1 個の文字の引数が出力先の文字列にコピーされます。C が使用される場合、または、 修飾子が使用される場合、引数は WChar でなければなりません。
例:
StrPrintF(s, "Telephone%c",'s');
s への出力:
Telephones
% % 文字が出力先の文字列にコピーされます。
例:
StrPrintF(s, "%%","DEF");
s への出力:
%


ここで、この関数呼び出しをどのように使用するかの例を示します。

#include <unix_stdarg.h>
void MyPrintF(Char *s, Char *formatStr, ...)
{
  va_listargs;
  Char text[0x100];
  va_start(args,formatStr);
  StrVPrintF(text, formatStr,args);
  va_end(args);
  MyPutS(text);
}

互換性

2.0 New Feature Set が満たされる場合にのみ、実装されます。

参照

StrPrintF()


← 51 章に戻る? ↑トップへ 53 章に進む →?