to
関数
各 to
関数とそれに関連付けられているマクロ (存在する場合) は、1 つの文字を別の文字に変換します。
__toascii
tolower
、 _tolower
、 towlower
toupper
、 _toupper
、 towupper
解説
to
関数とマクロ変換は次のとおりです。
ルーチンによって返される値 | マクロ | 説明 |
---|---|---|
__toascii |
__toascii |
c を ASCII 文字に変換する |
tolower |
tolower |
該当する場合、c を小文字に変換する |
_tolower |
_tolower |
c を小文字に変換する |
towlower |
なし | c を対応するワイド文字の小文字に変換する |
toupper |
toupper |
該当する場合、c を大文字に変換する |
_toupper |
_toupper |
c を大文字に変換する |
towupper |
なし | c を対応するワイド文字の大文字に変換する |
マクロとしても定義されている to
ルーチンの関数バージョンを使用するには、 #undef
ディレクティブを含むマクロ定義を削除するか、 CTYPE.H
を含めないでください。 /Za コンパイラ オプションを使用する場合、コンパイラは toupper
または tolower
の関数バージョンを使用します。 toupper
関数とtolower
関数の宣言は、STDLIB.H
内にあります。
__toascii
ルーチンは c
の下位 7 ビット以外をすべて 0 に設定し、変換値が ASCII 文字セットの文字を表すようにします。 c
がすでに ASCII 文字セットの文字に該当している場合、c
は変更されません。
tolower
および toupper
ルーチン:
- 現在のロケールの
LC_CTYPE
カテゴリに準拠します (tolower
はisupper
を呼び出し、toupper
はislower
を呼び出します)。 c
が現在のロケールにおいて変換可能な文字の大文字か小文字を表し、その逆の大文字か小文字がそのロケールに存在する場合、c
を変換します。 それ以外の場合、c
は変換されません。
_tolower
および _toupper
ルーチン:
- ロケールに依存しない、高速バージョンの
tolower
および toupper です。 - isascii(
c
) と、isupper(c
) または islower(c
) のいずれかがゼロ以外の場合にのみ使用できます。 c
が変換に適したケースの ASCII 文字でない場合は、未定義の結果になります。
次の条件が両方ともゼロ以外の場合にのみ towlower
および towupper
関数はc
の変換されたコピーを返します。 それ以外の場合、c
は変換されません。
c
が適切な大文字または小文字のワイド文字である (つまりiswupper
または iswlower が、それぞれゼロ以外の場合)。- ターゲット ケースには対応するワイド文字があります (つまり、それぞれ
iswlower
または iswupper, は 0 以外です)。
例
// crt_toupper.c
/* This program uses toupper and tolower to
* analyze all characters between 0x0 and 0x7F. It also
* applies _toupper and _tolower to any code in this
* range for which these functions make sense.
*/
#include <ctype.h>
#include <string.h>
#include <stdio.h>
char msg[] = "Some of THESE letters are Uppercase.";
char *p;
int main( void )
{
printf( "%s\n", msg );
/* Reverse case of message. */
for( p = msg; p < msg + strlen( msg ); p++ )
{
if( islower( *p ) )
putchar( _toupper( *p ) );
else if( isupper( *p ) )
putchar( _tolower( *p ) );
else
putchar( *p );
}
}
Some of THESE letters are Uppercase.
sOME OF these LETTERS ARE uPPERCASE.