CおよびC++における一重引用符と二重引用符の違い
C/C++における一重引用符と二重引用符の基本的な違い
C言語およびC++では、一重引用符(')は単一の文字を表すために使用され、二重引用符(")は文字列リテラルを表すために使用されます。この区別は一見些細なことに思えますが、プログラムの動作に大きな影響を与える重要なポイントです。
例えば、文字列リテラル「"x"」は文字列であり、文字「'x'」とヌル終端文字「'\0'」を含んでいます。そのため、この場合の「"x"」は2文字分の配列として扱われます。一方、「'x'」はあくまで1つの文字を表すリテラルであり、両者はまったく別のものです。
文字リテラルの型とサイズの違い
C++では、文字リテラルのサイズはchar型になります。ところが、C言語では文字リテラルの型は整数型(int)として扱われる点に注意が必要です。
具体的には、C言語では32ビットアーキテクチャにおいて sizeof('a') は 4 を返し、CHAR_BIT は 8 となります。これは文字リテラルがint型として解釈されるためです。しかし、sizeof(char) については、C言語でもC++でも常に 1バイト です。
まとめ
- 一重引用符:単一の文字リテラルを表す(例:'x')
- 二重引用符:ヌル終端を含む文字列リテラルを表す(例:"x" は2要素の配列)
- 文字リテラルの型:C++ではchar型、Cではint型
- sizeof(char) はどちらの言語でも1バイト
-
C++のiscntrl()関数とは?制御文字の判定方法をわかりやすく解説
C++のiscntrl()関数は、指定された文字が制御文字(コントロール文字)であるかどうかを判定するための関数です。この関数は ctype.h ヘッダーファイル内で定義されており、改行(\n)やタブ(\t)など、画面に直接表示されない特殊な文字をチェックする際に活用されます。iscntrl()関数の構文iscntrl()関数の基本的な構文は以下のとおりです。int iscntrl ( int ch );引数 ch には、判定対象となる文字を渡します。文字が制御文字であれば0以外の値(真)を返し、制御文字でなければ0(偽)を返します。例1:文字列に含まれる制御文字の数をカウントする次のプログラ
-
C++のstrpbrk()関数とは?使い方とサンプルコードを解説
strpbrk()はC++の標準ライブラリ(<cstring>ヘッダ)に含まれる文字列関数の一つです。2つの文字列を受け取り、第1引数の文字列(str1)の中に、第2引数の文字列(str2)に含まれるいずれかの文字が最初に出現する位置を探します。一致する文字が見つかった場合は、その文字へのポインタを返します。見つからなかった場合や、終端のNULL文字(ヌルターミネータ)に到達した場合はNULLを返します。なお、この関数は終端のNULL文字自体を比較対象にはしません。strpbrk()の構文char *strpbrk(const char *str1, const char *str