Share via


文字列の概要

文字列関数は、文字列のコピー、比較、並べ替え、書式設定、変換を行う手段と、文字列内の各文字の文字型を決定する手段をアプリケーションに提供します。 すべての文字列関数は、アプリケーションが実行されているオペレーティング システムでこれらの文字セットがサポートされている場合、1 バイト、2 バイト、および Unicode 文字セットをサポートします。

セキュリティの警告: 文字列関数を誤って使用すると、アプリケーションのセキュリティ上の問題が発生する可能性があります。 通常、これにはバッファー オーバーランが含まれます。これにより、アプリケーションに対するサービス拒否攻撃や、攻撃者からの実行可能コードの挿入が可能になります。 Strsafe 関数を使用すると、文字列をより安全に処理でき、アプリケーションのセキュリティを強化することをお勧めします。 これらの関数の詳細については、「 Strsafe.h 関数の使用」を参照してください。

このセクションでは、次のトピックについて説明します。

C Run-Time 文字列関数との比較

多くの文字列関数は、標準の C ランタイム (CRT) ライブラリから使い慣れた文字列関数を複製または拡張します。 多くの機能強化により、文字列関数は Unicode または拡張文字セットを操作できます。 次の表は、CRT 関数、Windows 関数 (CRT 関数とは異なり Unicode をサポートする関数)、および StrSafe 関数を示しています。

CRT 文字列関数 Windows 文字列関数 StrSafe 関数
strcat lstrcat
StringCchCat
StringCchCatEx
StringCbCat
StringCbCatEx
Strcmp lstrcmp (同等の関数はありません)
strcpy lstrcpy
StringCchCopy
StringCchCopyEx
StringCbCopy
StringCbCopyEx
strlen lstrlen
StringCchLength
StringCbLength

 

たとえば、 strlen 関数は常に文字列内のバイト数を返しますが、 lstrlen 関数は TCHAR 値の数を返します。これは、関数の ANSI バージョンの場合はバイト、Unicode バージョンの 場合は WCHAR 値を参照します。

次の文字列関数は、文字セット内の任意の文字に対して動作するという点で 、tolowertoupper などの標準 C 関数とは異なります。 たとえば、 CharLower 関数を使用すると、アプリケーションは、ウムラウト (Ü) を含む大文字の U を小文字 (ü) に変換できます。 文字セットの詳細については、「 1 バイト文字セット」を参照してください。

機能 説明
CharLower 文字または文字列を小文字に変換します。
CharLowerBuff 文字列を小文字に変換します。
CharNext 文字列内の次の文字に移動します。
CharPrev 文字列内の前の文字に移動します。
CharUpper 文字または文字列を大文字に変換します。
CharUpperBuff 文字列を大文字に変換します。

 

次の文字列関数は、ユーザーが選択した言語のセマンティクスに基づいて文字を決定します。 これらの関数は Unicode 対応です。

機能 説明
IsCharAlpha 文字がアルファベットかどうかを判断します。
IsCharAlphaNumeric 文字が英数字かどうかを判断します。
IsCharLower 文字が小文字かどうかを判断します。
IsCharUpper 文字が大文字かどうかを判断します。

 

次の表は、標準の C ランタイム (CRT) 関数に対する Unicode 拡張機能を示しています。 前に説明したように、StrSafe 関数を使用すると、文字列をより安全に処理でき、アプリケーションのセキュリティを強化することをお勧めします。

標準 CRT 関数 String 関数 StrSafe 関数
sprintf wsprintf
StringCchPrintf
StringCchPrintfEx
StringCbPrintf
StringCbPrintfEx
vsprintf wvsprintf
StringCchVPrintf
StringCchVPrintfEx
StringCbVPrintf
StringCbVPrintfEx

 

文字列リソース

リソース内の文字列を保持するアプリケーションは、最小限の労力で新しい言語に変換できます。 ソース モジュールで文字列を検索する代わりに、リソース ファイル内の文字列を変換してアプリケーションを再リンクするだけです。 さらに、文字列リソースを使用すると、同じソース ファイルから Unicode バージョンと Unicode 以外のバージョンのアプリケーションを簡単に作成できます。

LoadString 関数は、アプリケーションの実行可能ファイルから文字列リソースを読み込みます。 FormatMessage 関数は、文字列リソースを読み込み、文字列に埋め込まれる書式設定オプションを解釈します。

バイナリ形式のリソースは Unicode 形式で格納されます。 リソースを読み込むときに、アプリケーションは Unicode バージョンのリソース関数 (LoadStringW など) を使用して、Unicode データとしてリソースを取得できます。

16 ビット文字列リソースの場合、最大長は 255 文字です。 32 ビット文字列リソースの場合、最大長は 65535 文字です。